vsh: Add VSH_OT_NONE option type to catch programming errors

Add a check that the default 0 assignment will not mean that an option
is considered to be VSH_OT_BOOL.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2024-03-04 15:40:40 +01:00
parent e1666a088b
commit 3fcae7a028
2 changed files with 8 additions and 0 deletions

View File

@ -335,6 +335,11 @@ vshCmddefCheckInternals(vshControl *ctl,
virBufferStrcat(&complbuf, opt->name, ", ", NULL);
switch (opt->type) {
case VSH_OT_NONE:
vshError(ctl, "invalid type 'NONE' of option '%s' of command '%s'",
opt->name, cmd->name);
return -1;
case VSH_OT_BOOL:
if (opt->completer || opt->completer_flags) {
vshError(ctl, "bool parameter '%s' of command '%s' has completer set",
@ -671,6 +676,7 @@ vshCmddefHelp(const vshCmdDef *def)
}
break;
case VSH_OT_ALIAS:
case VSH_OT_NONE:
/* aliases are intentionally undocumented */
continue;
}
@ -713,6 +719,7 @@ vshCmddefHelp(const vshCmdDef *def)
opt->name);
break;
case VSH_OT_ALIAS:
case VSH_OT_NONE:
continue;
}

View File

@ -85,6 +85,7 @@ typedef enum {
* vshCmdOptType - command option type
*/
typedef enum {
VSH_OT_NONE = 0, /* cannary to catch programming errors */
VSH_OT_BOOL, /* optional boolean option */
VSH_OT_STRING, /* optional string option */
VSH_OT_INT, /* optional or mandatory int option */