]> git.rm.cloudns.org Git - xonotic/gmqcc.git/commitdiff
Do not force -[aci] parameters' arguments to be in the same argv; (Allow 'gmqcc ...
authorWolfgang Bumiller <wolfgang.linux@bumiller.com>
Sat, 28 Apr 2012 12:32:52 +0000 (14:32 +0200)
committerWolfgang Bumiller <wolfgang.linux@bumiller.com>
Sat, 28 Apr 2012 18:55:42 +0000 (20:55 +0200)
main.c

diff --git a/main.c b/main.c
index 67e0b0c677980528fd93c47d363b3618738c9473..a8832864e9b12a8d564b92d628df142e208c5c49 100644 (file)
--- a/main.c
+++ b/main.c
@@ -86,9 +86,20 @@ int main(int argc, char **argv) {
                 );
                 return 0;
             }
-            case 'c': items_add((argitem){util_strdup(&argv[1][2]), 0}); break; /* compile  */ 
-            case 'a': items_add((argitem){util_strdup(&argv[1][2]), 1}); break; /* assemble */
-            case 'i': items_add((argitem){util_strdup(&argv[1][2]), 2}); break; /* includes */
+#define param_argument(argtype) do {                             \
+    if (argv[1][2])                                              \
+        items_add((argitem){util_strdup(&argv[1][2]), argtype}); \
+    else {                                                       \
+        ++argv; --argc;                                          \
+        if (argc <= 1)                                           \
+            goto clean_params_usage;                             \
+        items_add((argitem){util_strdup(&argv[1][0]), argtype}); \
+    }                                                            \
+} while (0)
+
+            case 'c': param_argument(0); break; /* compile */
+            case 'a': param_argument(1); break; /* assemble */
+            case 'i': param_argument(2); break; /* includes */
             default:
                 if (!strncmp(&argv[1][1], "debug" , 5)) { opts_debug  = true; break; }
                 if (!strncmp(&argv[1][1], "memchk", 6)) { opts_memchk = true; break; }
@@ -158,4 +169,9 @@ int main(int argc, char **argv) {
     
     util_meminfo();
     return 0;
+clean_params_usage:
+    for (itr = 0; itr < items_elements; itr++)
+        mem_d(items_data[itr].name);
+    mem_d(items_data);
+    return usage(app);
 }