#! /bin/sh
set -e
-case "$#:$1" in
- 0:* | 1:-h | 1:--help)
- echo "Usage: $0 PROG ARGS..."
- echo " Buffer stdin to temp file and pass to PROG with ARGS"
- exit 0
- ;;
-esac
+ext=""
+while :; do
+ case "$#:$1" in
+ 0:* | *:-h | *:--help)
+ echo "Usage: $0 [-e EXT] PROG ARGS..."
+ echo " Buffer stdin to temp file and pass to PROG with ARGS"
+ exit 0
+ ;;
+ 1:-e) echo >&2 "$0: missing argument"; exit 1 ;;
+ *:-e) ext=$2; shift 2 ;;
+ *:-e*) ext=${1#-e}; shift ;;
+ *:--) shift; break ;;
+ *:-*) echo >&2 "$0: unknown option \`$1'"; exit 1 ;;
+ *) break ;;
+ esac
+done
tmp=${TMPDIR-/tmp}/buf-$$
mkdir "$tmp"
trap 'rm -rf "$tmp"' INT QUIT TERM HUP EXIT
-cat >"$tmp/buf"
-set +e; "$@" "$tmp/buf"; st=$?; set -e
+cat >"$tmp/buf$ext"
+set +e; "$@" "$tmp/buf$ext"; st=$?; set -e
trap '' INT QUIT TERM HUP EXIT
rm -rf "$tmp"
exit $st
buf \- buffer stdin to a file
.SH SYNOPSIS
.B buf
+.RB [ \-e
+.IR ext ]
.I command
.RI [ arguments ...]
.SH DESCRIPTION
.VE
and exits with whatever exit status that exited with.
.PP
+Command line options:
+.TP
+.B "\-h"
+Show very brief help.
+.TP
+.BI "\-e " ext
+Arrange that the temporary file has the suffix
+.IR ext .
+No
+.RB ` . '
+is included unless you provide one yourself.
+.PP
This is particularly useful for programs which want to seek their
standard input, for example PostScript viewers. A typical invocation
might be something like
.VS
-man \-Tps buf | buf gv
+man \-Tps buf | buf \-e.ps gv
.VE
.SH BUGS
Doesn't exit correctly if subprogram was killed by a signal.