mistress
arg.h
1extern char *argv0;
2
3#define ARGBEGIN for ((argv0 || (argv0 = argv[0])), argc--, argv++;\
4 argv[0] && argv[0][0] == '-' && argv[0][1];\
5 argc--, argv++) {\
6 char *_args;\
7 char *_argt;\
8 char _argc;\
9 _args = &argv[0][1];\
10 if (_args[0] == '-' && _args[1] == '\0') {\
11 argc--, argv++;\
12 break;\
13 }\
14 _argc = '\0';\
15 while (_args[0] && (_argc = *_args++))\
16 switch (_argc)
17
18#define ARGEND (void)_args, _argt, _argc;\
19 }\
20 (void)argc, argv;
21
22#define ARGF() (_argt = _args, _args = "",\
23 (_argt[0] ? _argt :\
24 argv[1] ? (argc--, *++argv) : (char *)0))
25
26#define EARGF(x) (_argt = _args, _args = "",\
27 (_argt[0] ? _argt :\
28 argv[1] ? (argc--, *++argv) :\
29 ((x), abort(), (char *)0)))
30
31#define ARGC() _argc