[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[groff] 03/03: pic2graph: Refactor temp directory handling.
From: |
G. Branden Robinson |
Subject: |
[groff] 03/03: pic2graph: Refactor temp directory handling. |
Date: |
Wed, 25 Apr 2018 10:21:18 -0400 (EDT) |
gbranden pushed a commit to branch master
in repository groff.
commit b1cd3b77a48f56c319b8642234f39b21e260e0c3
Author: G. Branden Robinson <address@hidden>
Date: Wed Apr 25 10:18:44 2018 -0400
pic2graph: Refactor temp directory handling.
contrib/pic2graph/pic2graph.sh: Issue a diagnostic and give up if the
user's desired temporary directory does not exist. Also document the
Bashism $RANDOM and work around its absence.
The work-around is crap entropy but slightly better than a null string
(/bin/dash's $RANDOM), and at this point in the logic we're already on a
system where the mktemp command is not installed, doesn't support the
flags we need, or doesn't work.
Signed-off-by: G. Branden Robinson <address@hidden>
---
ChangeLog | 8 ++++++++
contrib/pic2graph/pic2graph.sh | 37 +++++++++++++++++++++++++------------
2 files changed, 33 insertions(+), 12 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 548a70e..29564d9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2018-04-25 G. Branden Robinson <address@hidden>
+ pic2graph: Refactor temp directory handling.
+
+ contrib/pic2graph/pic2graph.sh: Issue a diagnostic and give up
+ if the user's desired temporary directory does not exist. Also
+ document the Bashism $RANDOM and work around its absence.
+
+2018-04-25 G. Branden Robinson <address@hidden>
+
pic2graph: Handle embedded whitespace in temp dir.
contrib/pic2graph/pic2graph.sh: Quote shell variables having to
diff --git a/contrib/pic2graph/pic2graph.sh b/contrib/pic2graph/pic2graph.sh
index 97b486e..b229914 100644
--- a/contrib/pic2graph/pic2graph.sh
+++ b/contrib/pic2graph/pic2graph.sh
@@ -68,20 +68,33 @@ fi
# create temporary directory
tmp=
-for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
- test -z "$d" && continue
+for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp
+do
+ test -n "$d" && break
+done
+
+if ! test -d "$d"
+then
+ echo "$0: error: temporary directory \"$d\" does not exist or is" \
+ "not a directory" >&2
+ exit 1
+fi
- tmp=`(umask 077 && mktemp -d -q "$d/pic2graph-XXXXXX") 2> /dev/null` \
- && test -n "$tmp" && test -d "$tmp" \
- && break
+if ! tmp=`(umask 077 && mktemp -d -q "$d/pic2graph-XXXXXX") 2> /dev/null`
+then
+ # mktemp failed--not installed or is a version that doesn't support those
+ # flags? Fall back to older method which uses more predictable naming.
+ #
+ # $RANDOM is a Bashism. The fallback of $PPID is not good
pseudorandomness,
+ # but is supported by the stripped-down dash shell, for instance.
+ tmp="$d/pic2graph$$-${RANDOM:-$PPID}"
+ (umask 077 && mkdir "$tmp") 2> /dev/null
+fi
- tmp="$d/pic2graph$$-$RANDOM"
- (umask 077 && mkdir "$tmp") 2> /dev/null \
- && break
-done;
-if test -z "$tmp"; then
- echo "$0: cannot create temporary directory" >&2
- { (exit 1); exit 1; }
+if ! test -d "$tmp"
+then
+ echo "$0: error: cannot create temporary directory \"$tmp\"" >&2
+ exit 1
fi
# See if the installed version of convert(1) is new enough to support the -trim
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [groff] 03/03: pic2graph: Refactor temp directory handling.,
G. Branden Robinson <=