]> arthur.barton.de Git - ax-zsh.git/commitdiff
30_env.ax-io: Try to be even more clever when setting TMPDIR
authorAlexander Barton <alex@barton.de>
Wed, 21 Sep 2022 17:38:06 +0000 (19:38 +0200)
committerAlexander Barton <alex@barton.de>
Wed, 21 Sep 2022 17:38:06 +0000 (19:38 +0200)
Silently use the "runtime directory" of the user, when this is set already.

And if not, make sure to not use "/" but fallback to "/tmp" when the mktemp(1)
command failed for example.

core/30_env/30_env.ax-io

index 84bd1c23df5be7778e765eef8deb2c99381027a7..6b101e3d4914de6537290e75d5c2459ecc6663c1 100644 (file)
@@ -8,18 +8,27 @@ fi
 
 # Validate temporary directory
 if [[ -z "$TMPDIR" ]]; then
-       TMPDIR="$(dirname $(mktemp -ut tmp.XXXXXXXXXX))/"
-       user_tmpdir="$TMPDIR$UID"
-       mkdir -p "$user_tmpdir" >/dev/null 2>&1
-       if [[ -w "$user_tmpdir" ]]; then
-               TMPDIR="$user_tmpdir/"
-               chmod 0700 "$TMPDIR"
+       if [[ -n "$XDG_RUNTIME_DIR" && -w "$XDG_RUNTIME_DIR" ]]; then
+               # The "runtime directory" is set for this user, good, so use
+               # it silently as the "temporary directory", too:
+               TMPDIR="$XDG_RUNTIME_DIR"
+       else
+               # Try to find a sane "temporary directory", but warn the user
+               # that this is a best guess only!
+               TMPDIR="$(dirname $(mktemp -ut tmp.XXXXXXXXXX))/"
+               [[ -z "$TMPDIR" || "$TMPDIR" = "/" ]] && TMPDIR="/tmp"
+               user_tmpdir="$TMPDIR$UID"
+               mkdir -p "$user_tmpdir" >/dev/null 2>&1
+               if [[ -w "$user_tmpdir" ]]; then
+                       TMPDIR="$user_tmpdir/"
+                       chmod 0700 "$TMPDIR"
+               fi
+               echo "Note: \"TMPDIR\" was not set, using \"$TMPDIR\"." >&2
+               unset user_tmpdir
        fi
-       echo "WARNING: \"TMPDIR\" is not set, using \"$TMPDIR\" as default!" >&2
-       unset user_tmpdir
 fi
 if [[ ! -w "$TMPDIR" ]]; then
-       echo "WARNING: Temporary directory \"$TMPDIR\" is not writable!" >&2
+       echo "Warning: Temporary directory \"$TMPDIR\" is not writable!" >&2
 fi
 
 # Setup XDG cache directory