diff options
Diffstat (limited to 'Completion/Unix/Type')
-rw-r--r-- | Completion/Unix/Type/.distfiles | 2 | ||||
-rw-r--r-- | Completion/Unix/Type/_net_interfaces | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/Completion/Unix/Type/.distfiles b/Completion/Unix/Type/.distfiles index dfb856bcb..04c30b4b0 100644 --- a/Completion/Unix/Type/.distfiles +++ b/Completion/Unix/Type/.distfiles @@ -8,5 +8,5 @@ _domains _path_files _ps _user_at_host _files _pdf _pspdf _users _groups _perl_basepods _signals _users_on _hosts _perl_builtin_funcs _tar_archive _time_zone -_file_systems +_file_systems _net_interfaces ' diff --git a/Completion/Unix/Type/_net_interfaces b/Completion/Unix/Type/_net_interfaces new file mode 100644 index 000000000..cbd419ad8 --- /dev/null +++ b/Completion/Unix/Type/_net_interfaces @@ -0,0 +1,22 @@ +#autoload + +local expl list intf sep +local -a disp + +case $OSTYPE in + aix*) + intf=( ${(f)"$(lsdev -C -c if -F 'name:description')"} ) + if zstyle -T ":completion:${curcontext}" verbose; then + zstyle -s ":completion:${curcontext}:" list-separator sep || sep=-- + zformat -a list " $sep " "$intf[@]" + disp=(-ld list) + fi + ;; + darwin*|freebsd*) intf=( $(ifconfig -l) ) ;; + irix*) intf=( ${${${(f)"$(/usr/etc/netstat -i)"}%% *}[2,-1]} ) ;; + linux*) intf=( /proc/sys/net/ipv4/conf/*~*(all|default)(N:t) ) ;; + *) intf=( $(ifconfig -a|sed -n 's/^\([^ :]*\).*/\1/p') ) ;; +esac + +_wanted interfaces expl 'network interface' \ + compadd "$@" "$disp[@]" - "${(@)intf%%:*}" |