1extern const char *argv0;
2
3#define ARGBEGIN \
4 for (;;) { \
5 if (argc > 0) \
6 ++argv, --argc; \
7 if (argc == 0 || (*argv)[0] != '-') \
8 break; \
9 if ((*argv)[1] == '-' && !(*argv)[2]) { \
10 ++argv, --argc; \
11 break; \
12 } \
13 for (char *opt_ = &(*argv)[1], done_ = 0; !done_ && *opt_; ++opt_) { \
14 switch (*opt_)
15
16#define ARGEND \
17 } \
18 }
19
20#define EARGF(x) \
21 (done_ = 1, *++opt_ ? opt_ : argv[1] ? --argc, *++argv : ((x), abort(), (char *)0))