[Spice-devel] [PATCH v2] client/cmd_line_parser: fix wrong reporting of bad argument in --bla=val case
Hans de Goede
hdegoede at redhat.com
Fri Jan 7 01:54:47 PST 2011
Ack.
On 01/06/2011 12:18 PM, Alon Levy wrote:
> We use get_opt_long, which allows non ambiguous abbreviations, but
> since we didn't like that we have code that checks for abbreviations and
> issues an error. But that code only handled separate argument and key like:
> --bla value
> and didn't handle them in the same arguemnts, like:
> --bla=value
> This patch fixes that, and gives a slightly better error report (it still
> contains the =value part though)
> ---
> client/cmd_line_parser.cpp | 7 +++++--
> 1 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/client/cmd_line_parser.cpp b/client/cmd_line_parser.cpp
> index 963250b..da4af05 100644
> --- a/client/cmd_line_parser.cpp
> +++ b/client/cmd_line_parser.cpp
> @@ -346,10 +346,13 @@ int CmdLineParser::get_option(char** val)
> }
>
> #ifdef DISABLE_ABBREVIATE
> - int name_pos = (opt_obj->type == REQUIRED_ARGUMENT) ? optind - 2 : optind - 1;
> + int name_pos =
> + (opt_obj->type == REQUIRED_ARGUMENT&& optarg[-1] != '=')
> + ? optind - 2
> + : optind - 1;
> std::string cmd_name(_argv[name_pos] + 2);
> if (cmd_name.find(opt_obj->name) != 0) {
> - Platform::term_printf("%s: invalid option '--%s'\n", _argv[0], cmd_name.c_str());
> + Platform::term_printf("%s: invalid abbreviated option '--%s'\n", _argv[0], cmd_name.c_str());
> return OPTION_ERROR;
> }
> #endif
More information about the Spice-devel
mailing list