don't modify argv, use a counter - saait - the most boring static page generator
 (HTM) git clone git://git.codemadness.org/saait
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d30fbb819df1787d8f69848b1a715c7974e0eb1a
 (DIR) parent 06fa7f2aa301e39d5737ce86268b67a5057c83b7
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Mon,  4 Dec 2017 23:14:24 +0100
       
       don't modify argv, use a counter
       
       on some platforms (OpenBSD) this changes the exposed argv in tools using the
       kvm_* interface, such as ps and pgrep.
       
       add arg.h to HDR in Makefile.
       
       Diffstat:
         M Makefile                            |       2 ++
         M arg.h                               |      39 +++++++------------------------
       
       2 files changed, 10 insertions(+), 31 deletions(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       @@ -4,6 +4,8 @@ NAME = saait
        VERSION = 0.1
        SRC = \
                saait.c
       +HDR = \
       +        arg.h
        BIN = \
                saait
        MAN1 = \
 (DIR) diff --git a/arg.h b/arg.h
       @@ -21,45 +21,22 @@ extern char *argv0;
                                                argc--;\
                                                break;\
                                        }\
       -                                for (brk_ = 0, argv[0]++, argv_ = argv;\
       -                                                argv[0][0] && !brk_;\
       -                                                argv[0]++) {\
       +                                int i_;\
       +                                for (i_ = 1, brk_ = 0, argv_ = argv;\
       +                                                argv[0][i_] && !brk_;\
       +                                                i_++) {\
                                                if (argv_ != argv)\
                                                        break;\
       -                                        argc_ = argv[0][0];\
       +                                        argc_ = argv[0][i_];\
                                                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 ARGEND                        }\
                                }
        
       -#define ARGC()                argc_
       -
       -#define ARGNUMF()        (brk_ = 1, estrtonum(argv[0], 0, INT_MAX))
       -
       -#define EARGF(x)        ((argv[0][1] == '\0' && argv[1] == NULL)?\
       +#define EARGF(x)        ((argv[0][i_+1] == '\0' && argv[1] == NULL)?\
                                        ((x), abort(), (char *)0) :\
       -                                (brk_ = 1, (argv[0][1] != '\0')?\
       -                                        (&argv[0][1]) :\
       +                                (brk_ = 1, (argv[0][i_+1] != '\0')?\
       +                                        (&argv[0][i_+1]) :\
                                                (argc--, argv++, argv[0])))
        
       -#define ARGF()                ((argv[0][1] == '\0' && argv[1] == NULL)?\
       -                                (char *)0 :\
       -                                (brk_ = 1, (argv[0][1] != '\0')?\
       -                                        (&argv[0][1]) :\
       -                                        (argc--, argv++, argv[0])))
       -
       -#define LNGARG()        &argv[0][0]
       -
        #endif