
On 08/13/2012 02:53 PM, Doug Goldstein wrote:
On Mon, Aug 13, 2012 at 9:28 AM, Cole Robinson <crobinso@redhat.com> wrote:
Similar to the previous patch, prepending 'help' to a partial command string doesn't cut us any slack.
$ virsh help pool-define-as --name foo --type dir error: command 'help' doesn't support option --name
This patch adds a few hacks to make 'help' ignore everything after the first data bit, so the above command shows help output for pool-define-as. --- tools/virsh.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c index 324f789..ab8d6dc 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1219,8 +1219,10 @@ vshCmddefGetOption(vshControl *ctl, const vshCmdDef *cmd, const char *name, } }
- vshError(ctl, _("command '%s' doesn't support option --%s"), - cmd->name, name); + if (STRNEQ(cmd->name, "help")) { + vshError(ctl, _("command '%s' doesn't support option --%s"), + cmd->name, name); + } return NULL; }
@@ -1987,9 +1989,12 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) *optstr = '\0'; /* convert the '=' to '\0' */ optstr = vshStrdup(ctl, optstr + 1); } + /* Special case 'help' to ignore all spurious options */ if (!(opt = vshCmddefGetOption(ctl, cmd, tkdata + 2, &opts_seen, &opt_index))) { VIR_FREE(optstr); + if (STREQ(cmd->name, "help")) + continue; goto syntaxError; } VIR_FREE(tkdata); @@ -2027,8 +2032,10 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) continue; } else { get_data: + /* Special case 'help' to ignore spurious data */ if (!(opt = vshCmddefGetData(cmd, &opts_need_arg, - &opts_seen))) { + &opts_seen)) && + STRNEQ(cmd->name, "help")) { vshError(ctl, _("unexpected data '%s'"), tkdata); goto syntaxError; } -- 1.7.11.2
Worked for me when I tested it with the previous patches so ACK.
Thanks guys, pushed now. - Cole