summaryrefslogtreecommitdiff
path: root/completions/vpnc
diff options
context:
space:
mode:
Diffstat (limited to 'completions/vpnc')
-rw-r--r--completions/vpnc26
1 files changed, 23 insertions, 3 deletions
diff --git a/completions/vpnc b/completions/vpnc
index 4e1fa81e..b7b8c14a 100644
--- a/completions/vpnc
+++ b/completions/vpnc
@@ -8,11 +8,11 @@ _vpnc()
case $prev in
--help|--long-help|--version|--id|--username|--domain|--ifname|\
--application-version|--local-addr|--local-port|--udp-port|--dpd-idle|\
- --target-network)
+ --target-network|--ifmtu)
return
;;
--gateway)
- _known_hosts_real "$cur"
+ _known_hosts_real -- "$cur"
return
;;
--vendor)
@@ -36,6 +36,10 @@ _vpnc()
COMPREPLY=( $( compgen -W 'nopfs dh1 dh2 dh5 server' -- "$cur" ) )
return
;;
+ --ifmode)
+ COMPREPLY=( $( compgen -W 'tun tap' -- "$cur" ) )
+ return
+ ;;
--debug)
COMPREPLY=( $( compgen -W '0 1 2 3 99' -- "$cur" ) )
return
@@ -48,13 +52,29 @@ _vpnc()
_filedir -d
return
;;
+ --password-helper)
+ compopt -o filenames
+ COMPREPLY=( $( compgen -c -- "$cur" ) )
+ return
+ ;;
esac
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '$( _parse_help "$1" --long-help )' \
-- "$cur" ) )
+ elif [[ "$cur" == */* ]]; then
+ # explicit filename
+ _filedir conf
else
- COMPREPLY=( $( compgen -W '$( command ls /etc/vpnc )' -- "$cur" ) )
+ # config name, /etc/vpnc/<name>.conf
+ local IFS=$' \t\n' reset=$(shopt -p nullglob); shopt -s nullglob
+ local -a configs=( /etc/vpnc/*.conf )
+ configs=( "${configs[@]##*/}" )
+ configs=( "${configs[@]%.conf}" )
+ $reset
+ IFS=$'\n'
+ compopt -o filenames
+ COMPREPLY=( $( compgen -W '${configs[@]}' -- "$cur" ) )
fi
} &&
complete -F _vpnc vpnc