1
0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-10-02 08:51:18 +02:00
zsh/Functions/TCP/tcp_sess

40 lines
1.0 KiB
Plaintext

# try to disguise parameters from the eval'd command in case it's a function.
integer __myfd=1
if [[ -n $1 ]]; then
if [[ -z $tcp_by_name[$1] ]]; then
print no such session: $1
__myfd=2
elif [[ -n $2 ]]; then
local TCP_SESS=$1
shift
# A bit tricky: make sure the first argument gets re-evaluated,
# so as to get aliases etc. to work, but make sure the remainder
# don't, so as not to bugger up quoting. This ought to work the
# vast majority of the time, anyway.
local __cmd=$1
shift
eval $__cmd \$\*
return
else
TCP_SESS=$1
return 0;
fi
fi
# Print out the list of sessions, first the number, than the corresponding
# file descriptor. The current session, if any, is marked with an asterisk.
local cur name fd
for name in ${(ko)tcp_by_name}; do
fd=${tcp_by_name[$name]}
# mark current session with an asterisk
if [[ ${TCP_SESS} = $name ]]; then
cur=" *"
else
cur=
fi
print "sess:$name; fd:$fd$cur" >&$__myfd
done
return $(( __myfd - 1 ))