X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_share_grml%2Fzsh%2Fcompletion%2Flinux%2F_iwconfig;fp=usr_share_grml%2Fzsh%2Fcompletion%2Flinux%2F_iwconfig;h=6731597c02443f21c8c64645b0ab8bbd973034d7;hb=b5070ac43c7fc3a280526aaa172a901862198c8b;hp=0000000000000000000000000000000000000000;hpb=5c716b322f326200b851bdd3c8751cb1ab475e6e;p=grml-etc-core.git diff --git a/usr_share_grml/zsh/completion/linux/_iwconfig b/usr_share_grml/zsh/completion/linux/_iwconfig new file mode 100644 index 0000000..6731597 --- /dev/null +++ b/usr_share_grml/zsh/completion/linux/_iwconfig @@ -0,0 +1,86 @@ +#compdef iwconfig + +_wlan_interfaces() { + local intf + intf=$(iwconfig |& egrep 'IEEE 802.11[abg]' | cut -d' ' -f1 | tr ' ' \\n ) + # intf=$( fgrep ': ' < /proc/net/wireless | cut -d: -f1 | tr \\n ' ' | tr -s " \t" ) + _wanted interfaces expl 'wireless network interface' \ + compadd ${intf} +} + +_wlan_networks() { + networks=() + while read LINE + do + networks+=$LINE + done <<(iwlist scanning 2>/dev/null | grep ESSID | sed -e s/'.*"\(.*\)"'/'\1'/ ) + _wanted -x names expl 'network name' \ + compadd off any on ${networks} +} + +local curcontext="$curcontext" state line expl ret=1 + +_arguments -C \ + '(1 * -)--help[display help information]' \ + '(1 * -)--version[display version information]' \ + '1:network interface:_wlan_interfaces' \ + '*:parameter:->parameters' && ret=0 + +if [[ -n "$state" ]]; then + local -a arg + + case $words[CURRENT-1] in + essid) _wlan_networks;; + 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 + ;; + esac +fi + +return ret