| Adding parameter grouping. - geomyidae - A small C-based gopherd. | |
| git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfri… | |
| Log | |
| Files | |
| Refs | |
| Tags | |
| README | |
| LICENSE | |
| --- | |
| commit cf8dcb97a53fa14b89ade9088299ba8c1e8d7dc7 | |
| parent f7fa209ff3d253fe62813d925468f7fe14ebc507 | |
| Author: Christoph Lohmann <[email protected]> | |
| Date: Sun, 12 Jun 2011 17:36:55 +0200 | |
| Adding parameter grouping. | |
| Diffstat: | |
| M arg.h | 29 +++++++++++++++++++++++------ | |
| 1 file changed, 23 insertions(+), 6 deletions(-) | |
| --- | |
| diff --git a/arg.h b/arg.h | |
| @@ -5,13 +5,30 @@ | |
| extern char *argv0; | |
| -#define ARGBEGIN for(argv0 = *argv, argv++, argc--;\ | |
| - argv[0] && argv[0][0]=='-' && argv[0][1];\ | |
| - argc--, argv++) {\ | |
| +#define ARGBEGIN for(argv0 = *argv, argv++, argc--;\ | |
| + argv[0] && argv[0][1]\ | |
| + && argv[0][0] == '-';\ | |
| + argc--, argv++) {\ | |
| char _argc;\ | |
| - _argc = argv[0][1];\ | |
| - switch(_argc) | |
| -#define ARGEND USED(_argc);} USED(argv);USED(argc); | |
| + char **_argv;\ | |
| + if(argv[0][1] == '-' && argv[0][2] == '\0') {\ | |
| + argv++;\ | |
| + argc--;\ | |
| + break;\ | |
| + }\ | |
| + for(argv[0]++, _argv = argv; argv[0][0];\ | |
| + argv[0]++) {\ | |
| + if(_argv != argv)\ | |
| + break;\ | |
| + _argc = argv[0][0];\ | |
| + switch(_argc) | |
| + | |
| +#define ARGEND }\ | |
| + USED(_argc);\ | |
| + }\ | |
| + USED(argv);\ | |
| + USED(argc); | |
| + | |
| #define EARGF(x) ((argv[1] == nil)? ((x), abort(), (char *)0) :\ | |
| (argc--, argv++, argv[0])) | |