2003-02-06 13:21:49 +01:00
|
|
|
emulate -L zsh
|
|
|
|
setopt extendedglob
|
|
|
|
|
2003-07-04 18:27:36 +02:00
|
|
|
local opt tprompt sess read_fd tpat quiet cursess
|
2003-02-06 13:21:49 +01:00
|
|
|
|
|
|
|
while getopts "F:P:qS:" opt; do
|
|
|
|
case $opt in
|
|
|
|
(F) read_fd=$OPTARG
|
|
|
|
;;
|
|
|
|
(P) tprompt=$OPTARG
|
|
|
|
;;
|
|
|
|
(q) quiet=1
|
|
|
|
;;
|
|
|
|
(S) sess=$OPTARG
|
|
|
|
;;
|
|
|
|
(*) [[ $opt != \? ]] && print -r "Can't handle option $opt" >&2
|
|
|
|
return 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
(( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
|
|
|
|
|
|
|
|
# Per-session logs don't have the session discriminator in front.
|
|
|
|
if [[ -n $TCP_LOG_SESS ]]; then
|
|
|
|
print -r -- "$*" >>${TCP_LOG_SESS}.$sess
|
|
|
|
fi
|
|
|
|
# Always add the TCP prompt. We used only to do this with
|
|
|
|
# multiple sessions, but it seems always to be useful to know
|
|
|
|
# where data is coming from; also, it allows more predictable
|
|
|
|
# behaviour in tcp_expect.
|
|
|
|
if [[ -n $tprompt ]]; then
|
2003-07-04 18:27:36 +02:00
|
|
|
if [[ $sess = $TCP_SESS ]]; then
|
|
|
|
cursess="c:1"
|
|
|
|
else
|
|
|
|
cursess="c:0"
|
|
|
|
fi
|
|
|
|
zformat -f REPLY $tprompt "s:$sess" "f:$read_fd" $cursess
|
2003-02-06 13:21:49 +01:00
|
|
|
# We will pass this back up.
|
|
|
|
REPLY="$REPLY$*"
|
|
|
|
else
|
|
|
|
REPLY="$*"
|
|
|
|
fi
|
|
|
|
if [[ -n $TCP_LOG ]]; then
|
|
|
|
print -r -- $REPLY >>${TCP_LOG}
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ -z $quiet ]]; then
|
|
|
|
local skip=
|
|
|
|
if [[ ${#tcp_filter} -ne 0 ]]; then
|
|
|
|
# Allow tcp_filter to be an associative array, though
|
|
|
|
# it doesn't *need* to be.
|
|
|
|
for tpat in ${(v)tcp_filter}; do
|
|
|
|
[[ $REPLY = ${~tpat} ]] && skip=1 && break
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
if [[ -z $skip ]]; then
|
|
|
|
# Check flag passed down probably from tcp_fd_handler:
|
|
|
|
# if we have output, we are in zle and need to fix the display first.
|
|
|
|
# (The shell is supposed to be smart enough that you can replace
|
|
|
|
# all the following with
|
|
|
|
# [[ -o zle ]] && zle -I
|
|
|
|
# but I haven't dared try it yet.)
|
|
|
|
if [[ -n $TCP_INVALIDATE_ZLE ]]; then
|
|
|
|
zle -I
|
|
|
|
# Only do this the first time.
|
|
|
|
unset TCP_INVALIDATE_ZLE
|
|
|
|
fi
|
|
|
|
print -r -- $REPLY
|
|
|
|
fi
|
|
|
|
fi
|