1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-23 16:40:24 +02:00

22592: add tcp_send -c option for cat

This commit is contained in:
Peter Stephenson 2006-08-08 11:27:39 +00:00
parent 98e306e251
commit 901e6c7387
3 changed files with 32 additions and 12 deletions

View file

@ -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