|
Packit |
8462d6 |
# mount(8) completion -*- shell-script -*-
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
if [[ $OSTYPE == *linux* ]]; then
|
|
Packit |
8462d6 |
. "$BASH_SOURCE.linux"
|
|
Packit |
8462d6 |
return
|
|
Packit |
8462d6 |
fi
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
# This will pull a list of possible mounts out of
|
|
Packit |
8462d6 |
# /etc/{,v}fstab, unless the word being completed contains a ':', which
|
|
Packit |
8462d6 |
# would indicate the specification of an NFS server. In that case, we
|
|
Packit |
8462d6 |
# query the server for a list of all available exports and complete on
|
|
Packit |
8462d6 |
# that instead.
|
|
Packit |
8462d6 |
#
|
|
Packit |
8462d6 |
_mount()
|
|
Packit |
8462d6 |
{
|
|
Packit |
8462d6 |
local cur prev words cword
|
|
Packit |
8462d6 |
_init_completion -n : || return
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
local sm host
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
case $prev in
|
|
Packit |
8462d6 |
-t|--types)
|
|
Packit |
8462d6 |
_fstypes
|
|
Packit |
8462d6 |
return
|
|
Packit |
8462d6 |
;;
|
|
Packit |
8462d6 |
esac
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
[[ "$cur" == \\ ]] && cur="/"
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
if [[ "$cur" == *:* ]]; then
|
|
Packit |
8462d6 |
for sm in "$(type -P showmount)" {,/usr}/{,s}bin/showmount; do
|
|
Packit |
8462d6 |
[[ -x $sm ]] || continue
|
|
Packit |
8462d6 |
COMPREPLY=( $( compgen -W "$( "$sm" -e ${cur%%:*} | \
|
|
Packit |
8462d6 |
awk 'NR>1 {print $1}' )" -- "${cur#*:}" ) )
|
|
Packit |
8462d6 |
return
|
|
Packit |
8462d6 |
done
|
|
Packit |
8462d6 |
fi
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
if [[ "$cur" == //* ]]; then
|
|
Packit |
8462d6 |
host=${cur#//}
|
|
Packit |
8462d6 |
host=${host%%/*}
|
|
Packit |
8462d6 |
if [[ -n $host ]]; then
|
|
Packit |
8462d6 |
COMPREPLY=( $( compgen -P "//$host" -W \
|
|
Packit |
8462d6 |
"$( smbclient -d 0 -NL $host 2>/dev/null |
|
|
Packit |
8462d6 |
command sed -ne '/^[[:blank:]]*Sharename/,/^$/p' |
|
|
Packit |
8462d6 |
command sed -ne '3,$s|^[^A-Za-z]*\([^[:blank:]]*\).*$|/\1|p' )" \
|
|
Packit |
8462d6 |
-- "${cur#//$host}" ) )
|
|
Packit |
8462d6 |
fi
|
|
Packit |
8462d6 |
elif [[ -r /etc/vfstab ]]; then
|
|
Packit |
8462d6 |
# Solaris
|
|
Packit |
8462d6 |
COMPREPLY=( $( compgen -W "$( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' /etc/vfstab )" -- "$cur" ) )
|
|
Packit |
8462d6 |
elif [[ ! -e /etc/fstab ]]; then
|
|
Packit |
8462d6 |
# probably Cygwin
|
|
Packit |
8462d6 |
COMPREPLY=( $( compgen -W "$( $1 | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' )" -- "$cur" ) )
|
|
Packit |
8462d6 |
else
|
|
Packit |
8462d6 |
# probably BSD
|
|
Packit |
8462d6 |
COMPREPLY=( $( compgen -W "$( awk '! /^[ \t]*#/ {if ($2 ~ /\//) print $2}' /etc/fstab )" -- "$cur" ) )
|
|
Packit |
8462d6 |
fi
|
|
Packit |
8462d6 |
} &&
|
|
Packit |
8462d6 |
complete -F _mount -o default -o dirnames mount
|
|
Packit |
8462d6 |
|
|
Packit |
8462d6 |
# ex: filetype=sh
|