We know that the bash completer automatically handle colon by preceding
it with an escape character backslash.
While our bash autompletion file vsh completes multiple items, In case
there're multiple items which have same prefix and the content of completion
items contain colon(say mac address), The vsh needs to correctly hands
the backslash which are added by bash completer, Otherwise the completion
won't be successful. This patch fixes this problem.

e.g.:

 # virsh domiflist --domain VM
 Interface   Type      Source    Model    MAC
-------------------------------------------------------------
 vnet0       network   default   virtio   52:54:00:fb:7b:f5
 vnet1       bridge    br0       virtio   52:54:00:80:1b:21

Before:
 # virsh detach-interface --domain VM --mac <TAB>
 # virsh detach-interface --domain VM --mac 52\:54\:00\:<TAB><TAB>

After:
 # virsh detach-interface --domain VM --mac <TAB>
 # virsh detach-interface --domain VM --mac 52\:54\:00\:<TAB><TAB>
 52:54:00:80:1b:21  52:54:00:fb:7b:f5
 # virsh detach-interface --domain VM --mac 52\:54\:00\:

Signed-off-by: Lin Ma <l...@suse.com>
---
 tools/bash-completion/vsh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/bash-completion/vsh b/tools/bash-completion/vsh
index 8493cad28b..fb38e8616f 100644
--- a/tools/bash-completion/vsh
+++ b/tools/bash-completion/vsh
@@ -39,6 +39,7 @@ _vsh_complete()
     fi
 
     INPUT=( "${COMP_WORDS[@]:$i:$COMP_CWORD}" )
+    INPUT[-1]=${INPUT[-1]//\\:/:}
 
     # Uncomment these lines for easy debug.
 #    echo;
-- 
2.26.0


Reply via email to