ref: b0f3613b586e0f7c00156401040189d91b5bdc0c
dir: /inc/arg.h/
/* * 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];\ argc--, argv++) {\ if (argv[0][0] == '-') {\ char argc_;\ char **argv_;\ int brk_;\ if (argv[0][1] == '-' && argv[0][2] == '\0') {\ argv++;\ argc--;\ break;\ }\ for (brk_ = 0, argv[0]++, argv_ = argv;\ argv[0][0] && !brk_;\ argv[0]++) {\ if (argv_ != argv)\ break;\ argc_ = argv[0][0];\ switch (argc_) #define ARGOPERAND \ }\ } else if (argv[0][0] != '\0') {\ { #define ARGEND \ }\ } else {\ break;\ }\ } #define ARGC() argc_ #define ARGOP() argv[0] #define ARGNUMF() (brk_ = 1, estrtonum(argv[0], 0, INT_MAX)) #define EARGF(x) \ ((argv[0][1] == '\0' && argv[1] == NULL) ?\ ((x), abort(), (char *)0) :\ (brk_ = 1, (argv[0][1] != '\0') ?\ (&argv[0][1]) :\ (argc--, argv++, argv[0]))) #define ARGF() \ ((argv[0][1] == '\0' && argv[1] == NULL)?\ (char *)0 :\ (brk_ = 1, (argv[0][1] != '\0')?\ (&argv[0][1]) :\ (argc--, argv++, argv[0]))) #define LNGARG() &argv[0][0] #endif