diff options
Diffstat (limited to 'inc/args.h')
| -rw-r--r-- | inc/args.h | 46 |
1 files changed, 33 insertions, 13 deletions
@@ -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 |
