From 5c1f3b65a6f5abeae8459f41adb8fd2316971515 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 6 Feb 2003 12:21:49 +0000 Subject: 18202: New TCP function system plus small error message change in ztcp. --- Functions/TCP/tcp_sess | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Functions/TCP/tcp_sess (limited to 'Functions/TCP/tcp_sess') diff --git a/Functions/TCP/tcp_sess b/Functions/TCP/tcp_sess new file mode 100644 index 000000000..ee3d268b3 --- /dev/null +++ b/Functions/TCP/tcp_sess @@ -0,0 +1,39 @@ +# 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 )) -- cgit 1.4.1