So far I've been using getopt_long
to parse options for a command line C program.
Is there a way to stop getopt_long
parsing when it hits a non-option argument? If not, what's the best way to handle this in C?
To give an example, I'd like to handle commands in a similar way to git, and have general arguments before a command, and command-specific arguments after it:
git [general options] <command> [command options]
e.g.:
git --bare commit -a
git -p --bare status -s
-p
and --bare
are general options, and can be used with all commands, whereas -a
is specific to the commit
command, and -s
specific to the status
command.
Using getopt_long
will try and parse all the options first, and then leave the non-option arguments to be handled. I'd ideally like to stop parsing once I hit a non-option (i.e. the command), and then pass the remaining arguments to a command-specific option parser.