diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2006-08-08 11:27:39 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2006-08-08 11:27:39 +0000 |
commit | 901e6c7387bd0145ce26356eda1573d20293a57a (patch) | |
tree | c0fdf9d6a1448a9dc592a0c4f08ba63345ee33c5 /Functions/TCP/tcp_send | |
parent | 98e306e251aca4937ca9947c33d686abbc638561 (diff) | |
download | zsh-901e6c7387bd0145ce26356eda1573d20293a57a.tar.gz zsh-901e6c7387bd0145ce26356eda1573d20293a57a.tar.xz zsh-901e6c7387bd0145ce26356eda1573d20293a57a.zip |
22592: add tcp_send -c option for cat
Diffstat (limited to 'Functions/TCP/tcp_send')
-rw-r--r-- | Functions/TCP/tcp_send | 30 |
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 |