Re: [PATCH] Have a flag to stop the option parsing at the first argument.
- From
Wincent Colaiuta <win@wincent.com>
- Date
- Dec 17, 2007, 11:10 UTC
- Message-ID
- <30351C09-8BED-4D81-ABDD-2E079B4D54D2@wincent.com>
- In-Reply-To
- <20071217095014.GF7453@artemis.madism.org>
El 17/12/2007, a las 10:50, Pierre Habouzit escribió:
Show 22 quoted lines
> Signed-off-by: Pierre Habouzit <madcoder@debian.org>
> ---
>> // ...
>> /* when in `git --opt1 --opt2 foo -a -b -c` mode: */
>> int cmd_pos = git_find_builtin_command_name(argc, argv);
>> int count = parse_options(cmd_pos, argv, git_generic_options,
>> "git [special-options] cmd [options]", 0);
>> if (count)
>> die("unknown git command: `%s`", argv[0]);
>> argv += cmd_pos;
>> argc -= cmd_pos;
>> /* here we simulate an argv of {"foo", "-a", "-b", "-c"} */
>
> Or even simpler, with the following specifically tailored patch you
> can directly write:
>
> argc = parse_options(argc, argv, git_generic_options,
> "git [generic-options] <command> [cmd-options]",
> PARSE_OPT_STOP_AT_ARG);
>
> and then {argc, argv} will exactly be the NULL-terminated array
> starting with the builtin command. Kind of nice :)Indeed, nice ideas. I think all this will lead to a nice UI improvement post-1.5.4.
About the only thing that I think would merit action *prior* to 1.5.4 is marking the "-p" switch to git (synonym for --paginate) as deprecated, see as it clashes with other commands' uses of that switch ("git log -p" for example). Are there any other conflicting specials that a currently parsed in git.c?
Cheers, Wincent