12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- * Copy me if you can.
- * by 20h
- */
- #ifndef ARG_H__
- #define ARG_H__
- extern char *argv0;
- /* use main(int argc, char *argv[]) */
- #define ARGBEGIN \
- for (argv0 = *argv, argv++, argc--; \
- argv[0] && argv[0][0] == '-' && argv[0][1]; \
- argc--, argv++) { \
- char argc_; \
- char **argv_; \
- int brk_; \
- if (argv[0][1] == '-' && argv[0][2] == '\0') { \
- argv++; \
- argc--; \
- break; \
- } \
- int i_; \
- for (i_ = 1, brk_ = 0, argv_ = argv; argv[0][i_] && !brk_; \
- i_++) { \
- if (argv_ != argv) break; \
- argc_ = argv[0][i_]; \
- switch (argc_)
- #define ARGEND \
- } \
- }
- #define ARGC() argc_
- #define EARGF(x) \
- ((argv[0][i_ + 1] == '\0' && argv[1] == NULL) \
- ? ((x), abort(), (char *)0) \
- : (brk_ = 1, \
- (argv[0][i_ + 1] != '\0') ? (&argv[0][i_ + 1]) \
- : (argc--, argv++, argv[0])))
- #define ARGF() \
- ((argv[0][i_ + 1] == '\0' && argv[1] == NULL) \
- ? (char *)0 \
- : (brk_ = 1, \
- (argv[0][i_ + 1] != '\0') ? (&argv[0][i_ + 1]) \
- : (argc--, argv++, argv[0])))
- #endif
|