summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2011-01-06 12:54:28 +0200
committerAlon Levy <alevy@redhat.com>2011-01-17 18:48:50 +0200
commit609105a27658d0849e0e218a5f355b302c820c05 (patch)
tree1cefe890b97ce95809e9c481a35103891d1ab01f
parentd0fa80641daf9d49ea6590d4106c32c79b872d4e (diff)
downloadspice-609105a27658d0849e0e218a5f355b302c820c05.tar.gz
spice-609105a27658d0849e0e218a5f355b302c820c05.tar.xz
spice-609105a27658d0849e0e218a5f355b302c820c05.zip
client/cmd_line_parser: fix wrong reporting of bad argument in --bla=val case
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)
-rw-r--r--client/cmd_line_parser.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/client/cmd_line_parser.cpp b/client/cmd_line_parser.cpp
index a813629d..7c396ba1 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