OrionUserland
Barry Importing existing Orion Userland 19aefaa (2 years, 4 months ago)diff --git a/ls/arg.h b/ls/arg.h new file mode 100644 index 0000000..9022339 --- /dev/null +++ b/ls/arg.h @@ -0,0 +1,42 @@ +#ifndef ARG_H +#define ARG_H + +extern char *progname; + +#define ARGBEGIN for (progname = *argv, argv++, argc--; \ + argc && argv[0] && argv[0][0] == '-' \ + && argv[0][1]; \ + argc--, argv++) { \ + char argc_, **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