main shrubtools / nviz / arg.h
 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))