From: Michael D. Lowis Date: Wed, 22 Dec 2021 03:58:33 +0000 (-0500) Subject: fixed option parsing and added support for -- X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=3d7500cc66daf1b824fe6e6e4b7b975c6be63990;p=proto%2Faos.git fixed option parsing and added support for -- --- diff --git a/lib/a/Options.c b/lib/a/Options.c index dd3c894..72c4cf1 100644 --- a/lib/a/Options.c +++ b/lib/a/Options.c @@ -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; }