st

fork of suckless's simple terminal
Index Commits 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