summaryrefslogtreecommitdiff
path: root/inc/args.h
diff options
context:
space:
mode:
authorjohannes <johannes.herman@gmail.com>2024-02-14 19:06:58 +0100
committerjohannes <johannes.herman@gmail.com>2024-02-14 19:06:58 +0100
commit6275c45aa4b92b54d71186760a8f9c4b95342779 (patch)
tree01c19ed6c105f8594f55e2708383f6d73aad112d /inc/args.h
parent8cac1bcb93ebc1f1092b27825880204908e59c28 (diff)
changed args parsing
Diffstat (limited to 'inc/args.h')
-rw-r--r--inc/args.h46
1 files changed, 33 insertions, 13 deletions
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