[hackers] [st] don't modify argv, use a counter || Hiltjo Posthuma

From: <git_AT_suckless.org>
Date: Tue, 20 Mar 2018 21:29:45 +0100 (CET)

commit a5a928bfc1dd049780a45e072cb4ee42de7219bf
Author: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
AuthorDate: Tue Mar 20 21:22:27 2018 +0100
Commit: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
CommitDate: Tue Mar 20 21:22:27 2018 +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.

diff --git a/arg.h b/arg.h
index ba3fb3f..a22e019 100644
--- a/arg.h
+++ b/arg.h
_AT_@ -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
Received on Tue Mar 20 2018 - 21:29:45 CET

This archive was generated by hypermail 2.3.0 : Tue Mar 20 2018 - 21:36:25 CET