chiark / gitweb /
buf, buf.1: Allow the temporary file's extension to be set.
[misc] / buf
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