From 9f498643228df057f6e80babba6f9a064cb12df3 Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Thu, 9 Mar 2017 20:23:04 -0800 Subject: 40801: re-fix completion of mount points with spaces in the name Turns out that work of art removed by 33963 was necessary after all --- Completion/Unix/Command/_mount | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'Completion') diff --git a/Completion/Unix/Command/_mount b/Completion/Unix/Command/_mount index 9ab279d75..9a7041dee 100644 --- a/Completion/Unix/Command/_mount +++ b/Completion/Unix/Command/_mount @@ -959,9 +959,15 @@ udevordir) esac local MATCH MBEGIN MEND - mp_tmp=("${(@g::)mp_tmp}") - dpath_tmp=( "${(@Mg::)dev_tmp:#/*}" ) - dev_tmp=( "${(@g::)dev_tmp:#/*}" ) + # The complicated substitution for mount point names is required because + # characters in /etc/mtab that might confuse programs reading the names + # are encoded as exactly 3 octal digits, like for example \040 for space. + # The cleaner-looking ${(g::)mp_tmp} might consume too many digits. + # Both mp_tmp and dev_tmp are derived from /etc/mtab or "mount" output. + mp_tmp=("${(@)mp_tmp//(#m)\\[0-7](#c3)/${(#)$(( 8#${MATCH[2,-1]} ))}}") + dev_tmp=("${(@)dev_tmp//(#m)\\[0-7](#c3)/${(#)$(( 8#${MATCH[2,-1]} ))}}") + dpath_tmp=( "${(@M)dev_tmp:#/*}" ) + dev_tmp=( "${(@)dev_tmp:#/*}" ) _alternative \ 'device-labels:device label:compadd -a dev_tmp' \ -- cgit 1.4.1