Update arg.h from sbase
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Wed, 18 Dec 2013 07:29:28 +0000 (08:29 +0100)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Wed, 18 Dec 2013 07:29:28 +0000 (08:29 +0100)
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.

arg.h

diff --git a/arg.h b/arg.h
index 2b189fe..4df77a7 100644 (file)
--- 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
-