summaryrefslogtreecommitdiff
path: root/Completion/Linux/Command/_iwconfig
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Linux/Command/_iwconfig')
-rw-r--r--Completion/Linux/Command/_iwconfig81
1 files changed, 60 insertions, 21 deletions
diff --git a/Completion/Linux/Command/_iwconfig b/Completion/Linux/Command/_iwconfig
index 5957a7603..8ec8dfef2 100644
--- a/Completion/Linux/Command/_iwconfig
+++ b/Completion/Linux/Command/_iwconfig
@@ -1,29 +1,68 @@
#compdef iwconfig
-local iwparams prevword expl
+local curcontext="$curcontext" state line expl ret=1
-iwparams=(
-essid nwid freq channel sens mode ap nick rate rts frag txpower enc
-key power retry
-)
+_arguments -C \
+ '(1 * -)--help[display help information]' \
+ '(1 * -)--version[display version information]' \
+ '1:network interface:_net_interfaces' \
+ '*:parameter:->parameters' && ret=0
-if (( CURRENT == 2 )); then
- _net_interfaces || compadd -- --help --version
- return
-fi
-
-prevword="$words[CURRENT-1]"
+if [[ -n "$state" ]]; then
+ local -a arg
-if [[ -n ${iwparams[(r)$prevword]} ]]; then
- case "$prevword" in
- (mode)
- _wanted tag expl 'operating mode' \
- compadd Ad-Hoc Managed Master Repeater Secondary Monitor Auto
+ case $words[CURRENT-1] in
+ essid) _wanted -x names expl 'network name' compadd off any on ;;
+ nwid|domain) _message -e ids 'network id' ;;
+ freq|channel) _message -e channels 'channel or frequency' ;;
+ sens) _message -e levels 'signal level' ;;
+ mode)
+ _wanted modes expl 'operating mode' compadd \
+ Ad-Hoc Managed Master Repeater Secondary Monitor Auto
+ ;;
+ ap) _message -e access-points 'access point' ;;
+ nick*) _message -e names 'nickname' ;;
+ rate|bit*) _message -e bit-rates 'bit rate' ;;
+ rts*|frag*) _message -e sizes 'size' ;;
+ key|enc*) _message -e keys 'key' ;;
+ power)
+ arg=(
+ \*{min,max}'[modifier]'
+ '*off[disable power management]'
+ '*on[enable power management]'
+ '*all[receive all packets]'
+ 'unicast[receive unicast packets only]'
+ 'multicast[receive multicast and broadcast packets only]'
+ )
+ ;&
+ min|max)
+ _values -S ' ' -w 'parameter' \
+ 'period[set the period between wake ups]' \
+ 'timeout[set timeout before sleep]' \
+ $arg[@] && ret=0
+ ;;
+ period|timeout) _message -e timeouts 'timeout' ;;
+ txpower) _message -e power 'transmit power' ;;
+ retry) _message -e retries 'retries' ;;
+ *)
+ _values -S ' ' -w 'option' \
+ 'essid[set the network name]' \
+ '(nwid domain)'{nwid,domain}'[set the network ID]' \
+ '(freq channel)'{freq,channel}'[set the operating frequency or channel]' \
+ 'sens[set the sensitivity threhold]' \
+ 'mode[set operating mode]' \
+ 'ap[register with given access point]' \
+ '(nick nickname)'nick{,name}'[set the nickname]' \
+ '(rate bit)'{rate,bit}'[set the bitrate]' \
+ 'rts[set packet size threshold for sending RTS]' \
+ 'frag[set maximum packet fragment size]' \
+ \*{key,enc}'[add encryption key]' \
+ '*power[manipulate power management scheme parameters]' \
+ 'txpower[set transmit power]' \
+ 'retry[set number of retries]' \
+ 'commit[apply changes imediately]' && ret=0
;;
- (*)
- _wanted tag expl "$prevword value" \
- compadd off
esac
-else
- _wanted tag expl 'iwconfig parameter' compadd $iwparams commit
fi
+
+return ret