blob: 72a426542be5e12db9da51461edda9e6fc6bb4fd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#ifndef ARGS_H
#define ARGS_H
#define ARGTYPELEN 3
typedef enum
{
ARGUMENT = 0,
COMMAND = 1,
OPTION = 2
} argtype;
typedef struct arg
{
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 freeargs();
void runargs();
arg *getarg(int pos);
arg *getopt(char *flag, int pos);
void printhelp();
void paerror(char *str);
#endif // ARGS_H
|