aboutsummaryrefslogtreecommitdiff
path: root/minias.h
diff options
context:
space:
mode:
Diffstat (limited to 'minias.h')
-rw-r--r--minias.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/minias.h b/minias.h
index c16caf0..de6f2c8 100644
--- a/minias.h
+++ b/minias.h
@@ -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);