From 6275c45aa4b92b54d71186760a8f9c4b95342779 Mon Sep 17 00:00:00 2001 From: johannes Date: Wed, 14 Feb 2024 19:06:58 +0100 Subject: changed args parsing --- inc/args.h | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) (limited to 'inc/args.h') diff --git a/inc/args.h b/inc/args.h index 8c88e22..2d29eae 100644 --- a/inc/args.h +++ b/inc/args.h @@ -1,22 +1,42 @@ #ifndef ARGS_H #define ARGS_H -#include "../inc/commands.h" - -#define MAX_COMMANDS 64 +#define ARGTYPELEN 3 +typedef enum +{ + ARGUMENT = 0, + COMMAND = 1, + OPTION = 2 +} argtype; -typedef struct +typedef struct arg { - char *demopath; - char *mappath; - char *outpath; - char *extractmap; - char print; + argtype type; + char *flag; + int numopt; + char **opts; + void (*runarg)(struct arg *); +} arg; + +extern int argerr; // TODO should this be external? + +extern int ARGC; +extern arg *ARGS; + +void setinfo(char *info); +void setusage(char *usage); + +int addarg(char *value, char *desc, void (*runarg)(struct arg *)); +int addopt(char *flag, char *full, int numopt, char *value, char *desc, void (*runarg)(struct arg *)); + +int parseargs(int argc, char *args[]); +void runargs(); + +arg *getarg(int pos); +arg *getopt(char *flag, int pos); - int numcmds; - cmdinput commands[MAX_COMMANDS]; -} input; +void printhelp(); -void parseargs(input *in, int argc, char *argv[]); +void paerror(char *str); #endif // ARGS_H -- cgit v1.2.3