From 06a7b1ff4dbb1ed6a69e09765bef1f67a75a86eb Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Fri, 28 Oct 2016 16:59:58 -0400 Subject: [PATCH] vsh: Pass correct values for command line completion Commit id 'dcfdf341' passes 'opts_need_arg' and 'opts_seen' to vshCmddefGetData, but that seems to be incorrect as those values are not initialized properly (something at least one compiler found). Instead the static 'const_opts_need_arg' and 'const_opts_seen' values should be passed. By passing unitialized values leads to not finding possible options for simpler commands (domfsfreeze for example), where if you're in a virsh shell using command line completion - you'll get a list of files in your current directory instead of two options --domain and --mountpoint (as would happen with this patch applied. --- tools/vsh.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/vsh.c b/tools/vsh.c index 9558dadb63..17199aecb2 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -2788,7 +2788,8 @@ vshReadlineParse(const char *text, int state) /* No -- option provided and some other token given * Try to find the default option. */ - if (!(opt = vshCmddefGetData(cmd, &opts_need_arg, &opts_seen)) + if (!(opt = vshCmddefGetData(cmd, &const_opts_need_arg, + &const_opts_seen)) || opt->type == VSH_OT_BOOL) goto error; opt_exists = true;