До сих пор я использовал getopt_long
для разбора опций для программы командной строки C.
Есть ли способ остановить getopt_long
разбор, когда он встречает аргумент, не являющийся опцией? Если нет, то как лучше всего справиться с этим в C?
Чтобы привести пример, я хотел бы обрабатывать команды аналогично git и иметь общие аргументы перед командой и специфичные для команды аргументы после нее:
git [general options] <command> [command options]
например:.
git --bare commit -a
git -p --bare status -s
-p
и --bare
являются общими параметрами и могут использоваться со всеми командами, тогда как -a
относится к команде commit
и -s
относится к команде status
.
Использование getopt_long
попытается сначала проанализировать все параметры, а затем оставить необработанные аргументы для обработки. В идеале я бы хотел прекратить синтаксический анализ, как только я нажал не опцию (то есть команду), а затем передать оставшиеся аргументы анализатору опций, специфичному для команды.