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;
}