diff options
Diffstat (limited to 'toc/toc')
-rwxr-xr-x | toc/toc | 38 |
1 files changed, 20 insertions, 18 deletions
@@ -3,29 +3,31 @@ # toc -- run troff in three passes : ${TROFF:=troff} +SED='sed -n /^(toc)/{s///;p}' +RM=rm + +trap '$RM; RM=; exit 130' INT +trap '$RM' EXIT + +tmp() { + x=`mktemp` || exit $? + RM=$RM\ $x + eval $1=\$x +} if [ ! -t 0 ]; then - f=`mktemp` + tmp f cat > $f set -- "$@" $f fi -if [ -z "$PIPE" ]; then - g=`mktemp` - h=`mktemp` - - 2>$g >/dev/null $TROFF -rte=1 -rto=0 -E "$@" - <$g 2>$h >/dev/null $TROFF -rte=1 -rto=1 -E "$@" - <$h $TROFF -rte=0 -rto=1 "$@" - s=$? - - rm $h $g -else - $TROFF -rte=1 -rto=0 -zE "$@" 2>&1 | - $TROFF -rte=1 -rto=1 -zE "$@" 2>&1 | - $TROFF -rte=0 -rto=1 "$@" - s=$? -fi +tmp g +tmp h + +$TROFF -rte=1 -rto=0 "$@" 2>&1 1>/dev/null | $SED >$g +$TROFF -rte=1 -rto=1 "$@" <$g 2>&1 1>/dev/null | $SED >$h +$TROFF -rte=0 -rto=1 "$@" <$h + +s=$? -[ ! -t 0 ] && rm $f exit $s |