]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - bash-completion/umount
su: use lib/pty-session.c code for --pty
[thirdparty/util-linux.git] / bash-completion / umount
index ecf78ec5e19f883e27ff1dc5a1f05c34302c1e57..7fc2bd3765af3073a2a3967af77cb8143d99c416 100644 (file)
@@ -8,28 +8,21 @@ _umount_module()
                '-t'|'--types')
                        local TYPES
                        TYPES="
-adfs     noadfs        hfsplus   nohfsplus     smbfs     nosmbfs
-affs     noaffs        hpfs      nohpfs        squashfs  nosquashfs
-autofs   noautofs      iso9660   noiso9660     sysv      nosysv
-cifs     nocifs        jfs       nojfs         tmpfs     notmpfs
-coda     nocoda        minix     nominix       ubifs     noubifs
-coherent  nocoherent   msdos     nomsdos       udf       noudf
-cramfs   nocramfs      ncpfs     noncpfs       ufs       noufs
-debugfs          nodebugfs     nfs       nonfs         umsdos    noumsdos
-devpts   nodevpts      nfs4      nonfs4        usbfs     nousbfs
-efs      noefs         ntfs      nontfs        vfat      novfat
-                       proc      noproc        xenix     noxenix
-ext2     noext2        qnx4      noqnx4        xfs       noxfs
-ext3     noext3        ramfs     noramfs
-ext4     noext4        reiserfs  noreiserfs
-hfs      nohfs         romfs     noromfs
-"
+                               $(\ls /lib/modules/$(uname -r)/kernel/fs | awk '{print $1, "no" $1}')
+                               $(awk '{print $NF, "no" $NF}' /proc/filesystems)
+                       "
                        COMPREPLY=( $(compgen -W "$TYPES" -- $cur) )
                        return 0
                        ;;
                '-h'|'--help'|'-V'|'--version')
                        return 0
                        ;;
+               '-N'|'--namespace')
+                       local NAMESPACE
+                       NAMESPACE="$(lsns --type mnt --output PATH --noheadings)"
+                       COMPREPLY=( $(compgen -W "$NAMESPACE" -- $cur) )
+                       return 0
+                       ;;
        esac
        case $cur in
                -*)
@@ -40,12 +33,14 @@ hfs   nohfs         romfs     noromfs
                                --fake
                                --force
                                --internal-only
+                               --namespace
                                --no-mtab
                                --lazy
                                --test-opts
                                --recursive
                                --read-only
                                --types
+                               --quiet
                                --verbose
                                --help
                                --version"
@@ -53,9 +48,28 @@ hfs    nohfs         romfs     noromfs
                        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 | awk \
+               '{
+                       if ($0 ~ ENVIRON["HOME"]) {
+                               homeless = $0
+                               homeless = gensub(ENVIRON["HOME"], "\\\\~", "g", homeless)
+                               homeless = gensub(/(\s)/, "\\\\\\1", "g", homeless)
+                               print homeless
+                       }
+                       if ($0 ~ ENVIRON["PWD"]) {
+                               reldir = $0
+                               reldir = gensub(ENVIRON["PWD"]"/", "", "g", reldir)
+                               reldir = gensub(/(\s)/, "\\\\\\1", "g", reldir)
+                               print "./" reldir
+                               print reldir
+                       }
+                       gsub(/\s/, "\\\\&")
+                       print $0
+               }'
+       )" -- "$cur" ) )
+       IFS=$oldifs
 }
 complete -F _umount_module umount