tdon't modify argv, use a counter - st - [fork] customized build of st, the sim… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit a5a928bfc1dd049780a45e072cb4ee42de7219bf | |
parent 6ac8c8aa50d521f82d491ab54eb972660fdf3207 | |
Author: Hiltjo Posthuma <[email protected]> | |
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 | |
tthe kvm_* interface, such as ps and pgrep. | |
Diffstat: | |
M arg.h | 22 ++++++++++++---------- | |
1 file changed, 12 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/arg.h b/arg.h | |
t@@ -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 |