st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 33da67dac035b0d592f984bce90aec8d815b38a8
parent d60ee7337b5f378d8858ef3774c5552d2c8e54fa
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Wed, 18 Dec 2013 08:29:28 +0100

Update arg.h from sbase

sbase did some interesting modifications to arg.h (basically it
was fixed an incorrect use of the _ namespace), and this commit
take this last version for st.

Diffstat:
Marg.h | 48++++++++++++++++++++++++++++--------------------
1 file changed, 28 insertions(+), 20 deletions(-)
diff --git a/arg.h b/arg.h
@@ -3,53 +3,61 @@
  * by 20h
  */
 
-#ifndef __ARG_H__
-#define __ARG_H__
+#ifndef ARG_H__
+#define ARG_H__
 
 extern char *argv0;
 
-#define USED(x)        ((void)(x))
-
 /* use main(int argc, char *argv[]) */
 #define ARGBEGIN    for (argv0 = *argv, argv++, argc--;\
                     argv[0] && argv[0][1]\
                     && argv[0][0] == '-';\
                     argc--, argv++) {\
-                char _argc;\
-                char **_argv;\
-                int brk;\
+                char argc_;\
+                char **argv_;\
+                int brk_;\
                 if (argv[0][1] == '-' && argv[0][2] == '\0') {\
                     argv++;\
                     argc--;\
                     break;\
                 }\
-                for (brk = 0, argv[0]++, _argv = argv;\
-                        argv[0][0] && !brk;\
+                for (brk_ = 0, argv[0]++, argv_ = argv;\
+                        argv[0][0] && !brk_;\
                         argv[0]++) {\
-                    if (_argv != argv)\
+                    if (argv_ != argv)\
                         break;\
-                    _argc = argv[0][0];\
-                    switch (_argc)
+                    argc_ = argv[0][0];\
+                    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            }\
-                USED(_argc);\
-            }\
-            USED(argv);\
-            USED(argc);
+            }
+
+#define ARGC()        argc_
 
-#define ARGC()        _argc
+#define ARGNUMF(base)    (brk_ = 1, estrtol(argv[0], (base)))
 
 #define EARGF(x)    ((argv[0][1] == '\0' && argv[1] == NULL)?\
                 ((x), abort(), (char *)0) :\
-                (brk = 1, (argv[0][1] != '\0')?\
+                (brk_ = 1, (argv[0][1] != '\0')?\
                     (&argv[0][1]) :\
                     (argc--, argv++, argv[0])))
 
 #define ARGF()        ((argv[0][1] == '\0' && argv[1] == NULL)?\
                 (char *)0 :\
-                (brk = 1, (argv[0][1] != '\0')?\
+                (brk_ = 1, (argv[0][1] != '\0')?\
                     (&argv[0][1]) :\
                     (argc--, argv++, argv[0])))
 
 #endif
-