| Date: Sun, 12 Jun 2011 17:36:55 +0200
Adding parameter grouping.
Diffstat:
M arg.h | 29 +++++++++++++++++++++++------
1 file changed, 23 insertions(+), 6 deletions(-)
--- |
| @@ -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]))
|