chiark / gitweb /
buf, buf.1: Allow the temporary file's extension to be set.
authorMark Wooding <mwooding@good.com>
Thu, 23 Oct 2014 13:02:38 +0000 (14:02 +0100)
committerMark Wooding <mwooding@good.com>
Thu, 23 Oct 2014 13:02:38 +0000 (14:02 +0100)
Some programs try to deduce things about their input files from their
names, so accommodate them.

buf
buf.1

diff --git a/buf b/buf
index c95cf8948ef2bb10d3930f62047abc54c7f001d1..1bb1958f29a2b6792123fe3924a4dcfd6ca93bbe 100755 (executable)
--- a/buf
+++ b/buf
@@ -1,18 +1,27 @@
 #! /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
diff --git a/buf.1 b/buf.1
index 5dc47474fb947665f465dd452ed960e9351b2c1a..65b8a61f6eba9441d30a2b3ccee5b3d70167df12 100644 (file)
--- a/buf.1
+++ b/buf.1
@@ -15,6 +15,8 @@
 buf \- buffer stdin to a file
 .SH SYNOPSIS
 .B buf
+.RB [ \-e
+.IR ext ]
 .I command
 .RI [ arguments ...]
 .SH DESCRIPTION
@@ -26,11 +28,23 @@ program writes standard input to a temporary file.  It then runs
 .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.