diff options
Diffstat (limited to 'Completion/Linux/Command/_iwconfig')
-rw-r--r-- | Completion/Linux/Command/_iwconfig | 81 |
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 |