# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit a5a928bfc1dd049780a45e072cb4ee42de7219bf
    parent 6ac8c8aa50d521f82d491ab54eb972660fdf3207
    Author: Hiltjo Posthuma <hiltjo@codemadness.org>
    Date:   Tue, 20 Mar 2018 21:22:27 +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.

    Diffstat:
    Marg.h | 22++++++++++++----------

    1 file changed, 12 insertions(+), 10 deletions(-)
    diff --git a/arg.h b/arg.h
    @@ -21,28 +21,30 @@ 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_)
    +
     #define ARGEND			}\
     			}

     #define ARGC()		argc_

    -#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)?\
    +#define ARGF()		((argv[0][i_+1] == '\0' && argv[1] == NULL)?\
     				(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])))

     #endif