From 3fcae7a028d99c446c378a6a96d860e175463f06 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 4 Mar 2024 15:40:40 +0100 Subject: [PATCH] vsh: Add VSH_OT_NONE option type to catch programming errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Ján Tomko --- tools/vsh.c | 7 +++++++ tools/vsh.h | 1 + 2 files changed, 8 insertions(+) diff --git a/tools/vsh.c b/tools/vsh.c index 2cda6b575c..ad72b91d6c 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -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; } diff --git a/tools/vsh.h b/tools/vsh.h index f4152c8294..c49bed9d59 100644 --- a/tools/vsh.h +++ b/tools/vsh.h @@ -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 */