groff-commit
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]