1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-04 10:41:11 +02:00

36889: completion of system specific sockstat options

This commit is contained in:
Eric Cook 2015-10-19 11:33:17 +02:00 committed by Oliver Kiddle
parent 509c822b62
commit d8f8d3e534
2 changed files with 34 additions and 19 deletions

View file

@ -1,5 +1,8 @@
2015-10-19 Oliver Kiddle <opk@zsh.org>
* 36889: Eric Cook: Completion/BSD/Command/_sockstat:
completion of system specific sockstat options
* 36869: Matthew Martin: Completion/Unix/Command/_ssh: use
permissions to limit files completed for ssh identity files

View file

@ -1,23 +1,35 @@
#compdef sockstat
local -a args
local tmp_proto protocols proto
case $OSTYPE in
*bsd*)
args=(
'-4[show AF_INET (IPv4) sockets]'
'-6[show AF_INET6 (IPv6) sockets]'
'-c[show connected sockets]'
'-l[show listening sockets]'
'*-p[specify port number]:port numbers (comma delimited)'
'-u[show AF_LOCAL (UNIX) sockets]'
)
;|
freebsd*)
args+=(
'*-j[show sockets belonging to JID]: : _jails -0 -o jid'
'-L[exclude loopback]'
'*-P[specify protocol]: :_sequence -s , _ports'
)
;;
netbsd*)
args+=(
'*-f[only show specified address family]:address family:(inet inet6 local unix)'
'-n[no symbolic names for addresses/ports]'
)
;;
esac
tmp_proto=(${${(M)${(f)"$(</etc/protocols)"}##[a-z0-9]*}})
for proto ($tmp_proto) {
case $proto in
*\#*)
protocols=($protocols ${${(j: :)${=proto}}// *\# /:})
;;
*)
protocols=($protocols ${${(j: :)${=proto}}// */})
esac
}
if (( $#args )); then
_arguments -s -w $args
return
fi
_arguments -s \
'-4[show AF_INET (IPv4) sockets]' \
'-6[show AF_INET6 (IPv6) sockets]' \
'-c[show connected sockets]' \
'-l[show listening sockets]' \
'-u[show AF_LOCAL (UNIX) sockets]' \
'-p[only show Internet sockets if the port number is on the specified list]' \
'-P[only show sockets of the specified protocols]:protocols:(($protocols))'
_default