diff options
author | Mattias Andrée <maandree@kth.se> | 2016-12-28 13:08:41 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2016-12-28 13:08:41 +0100 |
commit | 7acda6127bba779f33d04bcbd3f76ca633e012fc (patch) | |
tree | 54a09ea5df00d5f4d325f9519b35f5fbc0730fc9 /arg.h | |
parent | Add LICENSE, arg.h, and xtest.c (diff) | |
download | xtest-7acda6127bba779f33d04bcbd3f76ca633e012fc.tar.gz xtest-7acda6127bba779f33d04bcbd3f76ca633e012fc.tar.bz2 xtest-7acda6127bba779f33d04bcbd3f76ca633e012fc.tar.xz |
Add +flags for inverted match
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
-rw-r--r-- | arg.h | 61 |
1 files changed, 37 insertions, 24 deletions
@@ -10,38 +10,51 @@ extern char *argv0; /* use main(int argc, char *argv[]) */ #define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ - argv[0] && argv[0][0] == '-'\ - && argv[0][1];\ + argv[0] && argv[0][1];\ argc--, argv++) {\ 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)\ + if (argv[0][0] == '-') {\ + if (argv[0][1] == '-' && argv[0][2] == '\0') {\ + argv++;\ + argc--;\ break;\ - argc_ = argv[0][0];\ - switch (argc_) + }\ + for (brk_ = 0, argv[0]++, argv_ = argv;\ + argv[0][0] && !brk_;\ + argv[0]++) {\ + if (argv_ != argv)\ + break;\ + argc_ = argv[0][0];\ + switch (argc_) /* Handles obsolete -NUM syntax */ -#define ARGNUM case '0':\ - case '1':\ - case '2':\ - case '3':\ - case '4':\ - case '5':\ - case '6':\ - case '7':\ - case '8':\ - case '9' +#define ARGNUM case '0':\ + case '1':\ + case '2':\ + case '3':\ + case '4':\ + case '5':\ + case '6':\ + case '7':\ + case '8':\ + case '9' + +#define ARGALT(SYMBOL) }\ + } else if (argv[0][0] == SYMBOL) {\ + for (brk_ = 0, argv[0]++, argv_ = argv;\ + argv[0][0] && !brk_;\ + argv[0]++) {\ + if (argv_ != argv)\ + break;\ + argc_ = argv[0][0];\ + switch (argc_) -#define ARGEND }\ +#define ARGEND }\ + } else {\ + break;\ + }\ } #define ARGC() argc_ |