Adding parameter grouping. - geomyidae - A small C-based gopherd.
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/
Log
Files
Refs
Tags
README
LICENSE
---
commit cf8dcb97a53fa14b89ade9088299ba8c1e8d7dc7
parent f7fa209ff3d253fe62813d925468f7fe14ebc507
Author: Christoph Lohmann <20h@r-36.net>
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]))