commit 08ef9966b59c7b5d686fb41ba29fc7b48e73d91d
Author:     Laslo Hunhold <[email protected]>
AuthorDate: Fri Aug 4 17:12:54 2017 +0200
Commit:     Laslo Hunhold <[email protected]>
CommitDate: Fri Aug 4 17:12:54 2017 +0200

    Import updated arg.h from farbfeld

diff --git a/arg.h b/arg.h
index cf30d65..ac9a2fb 100644
--- a/arg.h
+++ b/arg.h
@@ -1,20 +1,19 @@
 /*
  * ISC-License
  *
- * (c) 2017 Laslo Hunhold <[email protected]>
+ * Copyright 2017 Laslo Hunhold <[email protected]>
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.
  *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 #ifndef ARG_H
 #define ARG_H
@@ -24,15 +23,15 @@ extern char *argv0;
 /* int main(int argc, char *argv[]) */
 #define ARGBEGIN for (argv0 = *argv, *argv ? (argc--, argv++) : ((void *)0);   
   \
                       *argv && (*argv)[0] == '-' && (*argv)[1]; argc--, 
argv++) { \
-                       int argparsed;                                          
  \
-                       if ((*argv)[1] == '-' && (*argv)[2] == '\0') {          
  \
+                       int _i, _argused;                                       
  \
+                       if ((*argv)[1] == '-' && !(*argv)[2]) {                 
  \
                                argc--, argv++;                                 
  \
                                break;                                          
  \
                        }                                                       
  \
-                       for (argparsed = 0, (*argv)++; (*argv)[0]; (*argv)++) { 
  \
-                               switch((*argv)[0])
-#define ARGEND                 if (argparsed) {                                
  \
-                                       if ((*argv)[1] != '\0') {               
  \
+                       for (_i = 1, _argused = 0; (*argv)[_i]; _i++) {         
  \
+                               switch((*argv)[_i])
+#define ARGEND                 if (_argused) {                                 
  \
+                                       if ((*argv)[_i + 1]) {                  
  \
                                                break;                          
  \
                                        } else {                                
  \
                                                argc--, argv++;                 
  \
@@ -41,14 +40,9 @@ extern char *argv0;
                                }                                               
  \
                        }                                                       
  \
                  }
-#define ARGC()   *argv[0]
-#define ARGF_(x) (((*argv)[1] == '\0' && !*(argv + 1)) ?       \
-                       (x) :                                  \
-                       (argparsed = 1, ((*argv)[1] != '\0') ? \
-                               (&(*argv)[1]) :                \
-                               (*(argv + 1))                  \
-                       )                                      \
-                 )
+#define ARGC()   ((*argv)[_i])
+#define ARGF_(x) (((*argv)[_i + 1]) ? (_argused = 1, &((*argv)[_i + 1])) :     
   \
+                  (*(argv + 1))     ? (_argused = 1, *(argv + 1))        : (x))
 #define EARGF(x) ARGF_(((x), exit(1), (char *)0))
 #define ARGF()   ARGF_((char *)0)
 

Reply via email to