diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/BSD/Command/_sockstat | 21 |
2 files changed, 21 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index ed17d4bbc..69f5182b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-11-16 Mikael Magnusson <mikachu@gmail.com> + + * Eric Cook: 37050: Completion/BSD/Command/_sockstat: _sockstat: + minor improvements + 2015-11-15 Barton E. Schaefer <schaefer@zsh.org> * 37119: Doc/Zsh/expn.yo: further "Rules" clarifications diff --git a/Completion/BSD/Command/_sockstat b/Completion/BSD/Command/_sockstat index 1b11ba473..daad946fc 100644 --- a/Completion/BSD/Command/_sockstat +++ b/Completion/BSD/Command/_sockstat @@ -1,5 +1,6 @@ #compdef sockstat -local -a args +local -a args protocols +local proto case $OSTYPE in *bsd*) @@ -8,27 +9,37 @@ case $OSTYPE in '-6[show AF_INET6 (IPv6) sockets]' '-c[show connected sockets]' '-l[show listening sockets]' - '*-p[specify port number]:port numbers (comma delimited)' + '*-p+[specify port number]:port numbers (comma delimited)' '-u[show AF_LOCAL (UNIX) sockets]' ) ;| freebsd*) + for proto in ${${(M)${(f)"$(</etc/protocols)"}##[a-z0-9]*}}; do + case $proto in + *\#*) + protocols+=(${${${(j: :)${(q)=proto}}// *\# /\[}/%/\]}) + ;; + *) + protocols+=(${${(j: :)${=proto}}// */}) + esac + done + args+=( '*-j[show sockets belonging to JID]: : _jails -0 -o jid' '-L[exclude loopback]' - '*-P[specify protocol]: :_sequence -s , _ports' + '*-P+[specify protocol]: : _values -s , protocols $protocols' ) ;; netbsd*) args+=( - '*-f[only show specified address family]:address family:(inet inet6 local unix)' + '*-f+[only show specified address family]:address family:(inet inet6 local unix)' '-n[no symbolic names for addresses/ports]' ) ;; esac if (( $#args )); then - _arguments -s -w $args + _arguments -s -w : $args return fi |