summaryrefslogtreecommitdiffstats
path: root/completions/wvdial
diff options
context:
space:
mode:
Diffstat (limited to 'completions/wvdial')
-rw-r--r--completions/wvdial46
1 files changed, 46 insertions, 0 deletions
diff --git a/completions/wvdial b/completions/wvdial
new file mode 100644
index 0000000..8667400
--- /dev/null
+++ b/completions/wvdial
@@ -0,0 +1,46 @@
+# bash completion for wvdial -*- shell-script -*-
+
+_wvdial()
+{
+ local cur prev words cword split
+ _init_completion -s || return
+
+ case $prev in
+ --config)
+ _filedir
+ return
+ ;;
+ esac
+
+ $split && return
+
+ local config i IFS=$'\n'
+
+ case $cur in
+ -*)
+ COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
+ [[ ${COMPREPLY-} == *= ]] && compopt -o nospace
+ ;;
+ *)
+ # start with global and personal config files
+ config="/etc/wvdial.conf"$'\n'"$HOME/.wvdialrc"
+ # replace with command line config file if present
+ for ((i = 1; i < cword; i++)); do
+ if [[ ${words[i]} == "--config" ]]; then
+ config=${words[i + 1]}
+ break
+ fi
+ done
+ # parse config files for sections and
+ # remove default section
+ COMPREPLY=($(command sed -ne "s|^\[Dialer \($cur.*\)\]$|\1|p" $config \
+ 2>/dev/null | command grep -v '^Defaults$'))
+ # escape spaces
+ COMPREPLY=(${COMPREPLY[@]// /\\ })
+ ;;
+ esac
+
+} &&
+ complete -F _wvdial wvdial
+
+# ex: filetype=sh