]> git.mdlowis.com Git - proto/aos.git/commitdiff
fixed option parsing and added support for --
authorMichael D. Lowis <mike@mdlowis.com>
Wed, 22 Dec 2021 03:58:33 +0000 (22:58 -0500)
committerMichael D. Lowis <mike@mdlowis.com>
Wed, 22 Dec 2021 03:58:33 +0000 (22:58 -0500)
lib/a/Options.c

index dd3c894ccda0dd274cd843d8e50b9054be1de6d3..72c4cf15da911ab614fbb60b7e5899680b7204f5 100644 (file)
@@ -129,23 +129,38 @@ int Options_Parse(int argc, char** argv)
     ARGV0 = argv[0];
 
     int new_argc = 0;
+    int curr_arg = 1;
     /* now parse the arguments */
-    for (int i = 1; i < argc;)
+    for (; curr_arg < argc;)
     {
-        if (argv[i][0] == '-' && argv[i][1] == '-')
+        if (argv[curr_arg][0] == '-' && argv[curr_arg][1] == '-')
         {
-            ParseLongOption(&i, argv);
+            if (argv[curr_arg][2] == '\0')
+            {
+                curr_arg++;
+                break;
+            }
+            else
+            {
+                ParseLongOption(&curr_arg, argv);
+            }
         }
-        else if (argv[i][0] == '-')
+        else if (argv[curr_arg][0] == '-')
         {
-            ParseShortOption(&i, argv);
+            ParseShortOption(&curr_arg, argv);
         }
         else
         {
-            argv[new_argc++] = argv[i];
-            i++;
+            argv[new_argc++] = argv[curr_arg];
+            curr_arg++;
         }
     }
+    /* move remaining positional args */
+    for (; curr_arg < argc; curr_arg++)
+    {
+        argv[new_argc++] = argv[curr_arg];
+    }
+    argv[new_argc] = NULL;
 
     return new_argc;
 }