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_fd_handler | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Functions/TCP/tcp_fd_handler (limited to 'Functions/TCP/tcp_fd_handler') diff --git a/Functions/TCP/tcp_fd_handler b/Functions/TCP/tcp_fd_handler new file mode 100644 index 000000000..012fd4d87 --- /dev/null +++ b/Functions/TCP/tcp_fd_handler @@ -0,0 +1,35 @@ +local line name=${tcp_by_fd[$1]} +if [[ -n $name ]] +then + local TCP_INVALIDATE_ZLE + if (( $# > 2 )); then + zle -I + ## debugging only + # print "Flags on the play:" ${argv[3,-1]} + else + TCP_INVALIDATE_ZLE=1 + fi + if ! tcp_read -d -u $1; then + [[ -n $TCP_INVALIDATE_ZLE ]] && zle -I + print "[TCP fd $1 (session $name) gone awol; removing from poll list]" >& 2 + zle -F $1 + return 1 + fi + return 0 +else + zle -I + # Handle fds not in the TCP set similarly. + # This does the drain thing, to try and get as much data out as possible. + if ! read line <&$1; then + print "[Reading on $1 failed; removing from poll list]" >& 2 + zle -F $1 + return 1 + fi + line="fd$1:$line" + local newline + while read -t newline <&$1; do + line="${line} +fd$1:$newline" + done +fi +print -r - $line -- cgit 1.4.1