diff options
| author | Andrew Chambers <[email protected]> | 2021-10-14 21:02:47 +1300 |
|---|---|---|
| committer | Andrew Chambers <[email protected]> | 2021-10-14 21:02:47 +1300 |
| commit | 9fad209177414598f40241f1b2f2c4034b587e2d (patch) | |
| tree | ad9c53f0a694917314699cf7751ecbcd79aa3759 /minias.h | |
| parent | ad8d5f5f2689c21c3d3ea7d4fec0e2747f53883f (diff) | |
Add arg parsing.
Diffstat (limited to 'minias.h')
| -rw-r--r-- | minias.h | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -342,6 +342,27 @@ AsmLine *parse(void); /* util.c */ +#define ARGBEGIN \ + for (;;) { \ + if (argc > 0) \ + ++argv, --argc; \ + if (argc == 0 || (*argv)[0] != '-') \ + break; \ + if ((*argv)[1] == '-' && !(*argv)[2]) { \ + ++argv, --argc; \ + break; \ + } \ + for (char *opt_ = &(*argv)[1], done_ = 0; !done_ && *opt_; ++opt_) { \ + switch (*opt_) + +#define ARGEND \ + } \ + } + +#define EARGF(x) \ + (done_ = 1, opt_[1] ? ++opt_ : argv[1] ? --argc, \ + *++argv : ((x), abort(), (char *)0)) + void vwarn(const char *fmt, va_list ap); void fatal(const char *fmt, ...); void unreachable(void); |
