vsh: Fix '--help' option for virsh/virt-admin

The refactor of the libvirt tools command parser introduced a bug where
the '--help' option would cause an error:

 $ virsh list --help
 error: command 'list' doesn't support option --help

rather than printing the help for the command as the help option is
supposed to be handled separately from the real options.

Re-introduce the separate handling to the new parser code.

Fixes: 5540c3d241
Resolves: https://issues.redhat.com/browse/RHEL-36565
Reported-by: Lili Zhu <lizhu@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
Peter Krempa 2024-05-15 08:42:57 +02:00
parent 8b133e82fc
commit 811ce0e13b

View File

@ -1655,7 +1655,10 @@ vshCommandParse(vshControl *ctl,
/* lookup the option. Note that vshCmdGetOption also resolves aliases /* lookup the option. Note that vshCmdGetOption also resolves aliases
* and thus the value possibly contained in the alias */ * and thus the value possibly contained in the alias */
if (!(opt = vshCmdGetOption(ctl, cmd, optionname, &optionvalue, report))) { if (STREQ(optionname, "help")) {
cmd->helpOptionSeen = true;
g_clear_pointer(&optionvalue, g_free);
} else if (!(opt = vshCmdGetOption(ctl, cmd, optionname, &optionvalue, report))) {
if (STRNEQ(cmd->def->name, "help")) if (STRNEQ(cmd->def->name, "help"))
goto out; goto out;