From 55948988e896f457b654daff66bc5953f344c996 Mon Sep 17 00:00:00 2001
From: Lin Ma <lma@suse.com>
Date: Tue, 8 May 2018 22:20:31 +0800
Subject: [PATCH] virsh: Conditionally Ignore the first entry in list of
 completions

The first entry in the returned array is the substitution for TEXT. It
causes unnecessary output if other commands or options share the same
prefix, e.g.

$ virsh des<TAB><TAB>
des      desc     destroy

or

$ virsh domblklist --d<TAB><TAB>
--d        --details  --domain

This patch fixes the above issue.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
 tools/vsh.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/vsh.c b/tools/vsh.c
index 73ec007e56..68f3cd99f9 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -3493,7 +3493,10 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
     if (!(matches = vshReadlineCompletion(arg, 0, 0)))
         goto cleanup;
 
-    for (iter = matches; *iter; iter++)
+    /* According to rl_completion_matches documentation, the
+     * first entry in @matches array is some dummy substitution
+     * string for @arg. Skip it. */
+    for (iter = &matches[1]; *iter; iter++)
         printf("%s\n", *iter);
 
     ret = true;