[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