# psize.sh -- determine this system's pipe size, and write a define to
# pipesize.h so ulimit.c can use it.
+: ${TMPDIR:=/tmp}
+# try to use mktemp(1) if the system supports it
+{ TMPFILE="`mktemp $TMPDIR/pipsize.XXXXXX 2>/dev/null`"; } 2>/dev/null
+used_mktemp=true
+
+if [ -z "$TMPFILE" ]; then
+ TMPNAME=pipsize.$$
+ TMPFILE=$TMPDIR/$TMPNAME
+ used_mktemp=false
+fi
+
+trap 'rm -f "$TMPFILE" ; exit 1' 1 2 3 6 15
+trap 'rm -f "$TMPFILE"' 0
+
echo "/*"
echo " * pipesize.h"
echo " *"
echo " */"
echo ""
-./psize.aux 2>/tmp/pipesize | sleep 3
+#
+# Try to avoid tempfile races. We can't really check for the file's
+# existence before we run psize.aux, because `test -e' is not portable,
+# `test -h' (test for symlinks) is not portable, and `test -f' only
+# checks for regular files. If we used mktemp(1), we're ahead of the
+# game.
+#
+$used_mktemp || rm -f "$TMPFILE"
-if [ -s /tmp/pipesize ]; then
- echo "#define PIPESIZE `cat /tmp/pipesize`"
+./psize.aux 2>"$TMPFILE" | sleep 3
+
+if [ -s "$TMPFILE" ]; then
+ echo "#define PIPESIZE `cat "$TMPFILE"`"
else
echo "#define PIPESIZE 512"
fi
-rm -f /tmp/pipesize
-
exit 0