summaryrefslogtreecommitdiff
path: root/Functions/TCP
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2006-08-08 11:27:39 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2006-08-08 11:27:39 +0000
commit901e6c7387bd0145ce26356eda1573d20293a57a (patch)
treec0fdf9d6a1448a9dc592a0c4f08ba63345ee33c5 /Functions/TCP
parent98e306e251aca4937ca9947c33d686abbc638561 (diff)
downloadzsh-901e6c7387bd0145ce26356eda1573d20293a57a.tar.gz
zsh-901e6c7387bd0145ce26356eda1573d20293a57a.zip
22592: add tcp_send -c option for cat
Diffstat (limited to 'Functions/TCP')
-rw-r--r--Functions/TCP/tcp_send30
1 files changed, 20 insertions, 10 deletions
diff --git a/Functions/TCP/tcp_send b/Functions/TCP/tcp_send
index c6d8ad637..d5edf05bd 100644
--- a/Functions/TCP/tcp_send
+++ b/Functions/TCP/tcp_send
@@ -1,14 +1,16 @@
emulate -L zsh
setopt extendedglob cbases
-local opt quiet all sess fd nonewline
+local opt quiet all sess fd nonewline cat line
local -a sessions write_fds
integer mystat
-while getopts "al:nqs:" opt; do
+while getopts "acl:nqs:" opt; do
case $opt in
(a) all=1
;;
+ (c) cat=1
+ ;;
(n) nonewline=-n
;;
(q) quiet=1
@@ -55,21 +57,29 @@ trap 'TCP_FD_CLOSED=1' PIPE
local TCP_SESS
-for TCP_SESS in $sessions; do
+while true; do
+ if [[ -n $cat ]]; then
+ read -r line || break
+ else
+ line="$*"
+ fi
+ for TCP_SESS in $sessions; do
fd=${tcp_by_name[$TCP_SESS]}
if [[ -z $fd ]]; then
- print "No such session: $TCP_SESS" >&2
- mystat=1
- continue
+ print "No such session: $TCP_SESS" >&2
+ mystat=1
+ continue
fi
- print -u $fd $nonewline -r -- $*
+ print -u $fd $nonewline -r -- $line
if [[ $? -ne 0 || -n $TCP_FD_CLOSED ]]; then
- print "Session ${TCP_SESS}: fd $fd unusable." >&2
- unset TCP_FD_CLOSED
+ print "Session ${TCP_SESS}: fd $fd unusable." >&2
+ unset TCP_FD_CLOSED
fi
if [[ -n $TCP_OUTPUT ]]; then
- tcp_output -P "$TCP_OUTPUT" -S $TCP_SESS -F $fd -q "${(j. .)*}"
+ tcp_output -P "$TCP_OUTPUT" -S $TCP_SESS -F $fd -q "${(j. .)*}"
fi
+ done
+ [[ -z $cat ]] && break
done
return $mystat