about summary refs log tree commit diff
path: root/Completion/Unix/Command/_mount
diff options
context:
space:
mode:
authorDaniel Shahaf <d.s@daniel.shahaf.name>2017-08-02 15:10:02 +0000
committerDaniel Shahaf <d.s@daniel.shahaf.name>2017-08-08 14:55:02 +0000
commit5654b905f96720bef285dc92d6b2e2cc31bd971e (patch)
tree0e9640e4c0088ffaff653fee2aa0318c52b7d500 /Completion/Unix/Command/_mount
parente2124c47193f57bdc5a19061e2e9bc6969fda32e (diff)
downloadzsh-5654b905f96720bef285dc92d6b2e2cc31bd971e.tar.gz
zsh-5654b905f96720bef285dc92d6b2e2cc31bd971e.tar.xz
zsh-5654b905f96720bef285dc92d6b2e2cc31bd971e.zip
41481: _df: Complete mounted device and mount points.
This splits umount's "udevordir" completion from _mount to a new file,
without changing it.
Diffstat (limited to 'Completion/Unix/Command/_mount')
-rw-r--r--Completion/Unix/Command/_mount43
1 files changed, 1 insertions, 42 deletions
diff --git a/Completion/Unix/Command/_mount b/Completion/Unix/Command/_mount
index 9a7041dee..03cc01f8d 100644
--- a/Completion/Unix/Command/_mount
+++ b/Completion/Unix/Command/_mount
@@ -931,48 +931,7 @@ devordir)
   esac
   ;;
 udevordir)
-  local dev_tmp dpath_tmp mp_tmp mline
-
-  case "$OSTYPE" in
-  linux*|irix*)
-    tmp=( "${(@f)$(< /etc/mtab)}" )
-    dev_tmp=( "${(@)${(@)tmp%% *}:#none}" )
-    mp_tmp=( "${(@)${(@)tmp#* }%% *}" )
-    ;;
-  freebsd*|dragonfly*)
-    /sbin/mount | while read mline; do
-      dev_tmp+=( $mline[(w)1] )
-      mp_tmp+=( $mline[(w)3] )
-    done
-  ;;
-  darwin*)
-    tmp=( "${(@f)$(/sbin/mount)}" )
-    dev_tmp=( "${(@)${(@)tmp%% *}:#map}" )
-    mp_tmp=( "${(@)${(@)tmp#* on }%% \(*}" )
-    ;;
-  *)
-    /sbin/mount | while read mline; do
-      mp_tmp+=( $mline[(w)1] )
-      dev_tmp+=( $mline[(w)3] )
-    done
-    ;;
-  esac
-
-  local MATCH MBEGIN MEND
-  # 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' \
-    'device-paths: device path:_canonical_paths -A dpath_tmp -N -M "r:|/=* r:|=*" device-paths device\ path' \
-    'directories:mount point:_canonical_paths -A mp_tmp -N -M "r:|/=* r:|=*" directories mount\ point' && ret=0
+  _umountable
   ;;
 labels)
   _wanted labels expl 'disk label' compadd /dev/disk/by-label/*(:t) && ret=0