Adding parameter grouping. - geomyidae - A small C-based gopherd.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit cf8dcb97a53fa14b89ade9088299ba8c1e8d7dc7
 (DIR) parent f7fa209ff3d253fe62813d925468f7fe14ebc507
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sun, 12 Jun 2011 17:36:55 +0200
       
       Adding parameter grouping.
       
       Diffstat:
         arg.h                               |      29 +++++++++++++++++++++++------
       
       1 file changed, 23 insertions(+), 6 deletions(-)
       ---
 (DIR) 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]))