From: Karel Zak Date: Thu, 16 Nov 2017 15:27:32 +0000 (+0100) Subject: bash-completion: (umount) use findmnt, escape a space in paths X-Git-Tag: v2.32-rc1~196 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=75f03badd7ed9f1dd951863d75e756883d3acc55;p=thirdparty%2Futil-linux.git bash-completion: (umount) use findmnt, escape a space in paths # mount /dev/sdc1 /mnt/test/foo\ bar # umount has to return "/mnt/test/foo\ bar". Changes: * don't use mount | awk output, we have findmnt * force compgen use \n as entries separator Addresses: https://github.com/karelzak/util-linux/issues/539 Signed-off-by: Karel Zak --- diff --git a/bash-completion/umount b/bash-completion/umount index d76cb9fffd..98c90d61a4 100644 --- a/bash-completion/umount +++ b/bash-completion/umount @@ -40,9 +40,10 @@ _umount_module() return 0 ;; esac - local DEVS_MPOINTS - DEVS_MPOINTS="$(mount | awk '{print $1, $3}')" - COMPREPLY=( $(compgen -W "$DEVS_MPOINTS" -- $cur) ) - return 0 + + local oldifs=$IFS + IFS=$'\n' + COMPREPLY=( $( compgen -W '$(findmnt -lno TARGET | sed "s/\([[:blank:]]\)/\\\\\1/g")' -- "$cur" ) ) + IFS=$oldifs } complete -F _umount_module umount