summaryrefslogtreecommitdiff
path: root/.config/login.d/02_tmpdir.sh
diff options
context:
space:
mode:
authorLuke Shumaker <shumakl@purdue.edu>2015-02-06 15:17:51 -0500
committerLuke Shumaker <shumakl@purdue.edu>2015-02-06 15:17:51 -0500
commitdab097d5000c4697761b6985cb3512f7bce0147f (patch)
tree7b81b7826a1e23822955560f0f73dc09cda6c8e8 /.config/login.d/02_tmpdir.sh
parentf50b49ef26f5c692bda1f3f13cd38f9f4f395300 (diff)
parenta6f973687fb4a1a4558f74f7da595b6902a5dce0 (diff)
Merge remote-tracking branch 'origin/master' into purdue-cs/master
Conflicts: .config/X11/clientrc .config/bash/rc.d/emacs.sh .config/cron/make-config .config/emacs/custom.el .config/emacs/init.el .config/git/config .config/login.sh .config/selected_editor .local/bin/config-path
Diffstat (limited to '.config/login.d/02_tmpdir.sh')
-rw-r--r--.config/login.d/02_tmpdir.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/.config/login.d/02_tmpdir.sh b/.config/login.d/02_tmpdir.sh
new file mode 100644
index 0000000..293064e
--- /dev/null
+++ b/.config/login.d/02_tmpdir.sh
@@ -0,0 +1,21 @@
+if [[ ! -d "$HOME/tmp/$HOSTNAME" ]]; then
+ tmp="$(mktemp --tmpdir -d "$USER@$HOSTNAME-tmpdir.XXXXXXXXXXXXXXXXXXX")"
+ mkdir -p -- "$HOME/tmp"
+ ln -sf "$tmp" "$HOME/tmp/$HOSTNAME"
+ unset tmp
+fi
+export TMPDIR="$HOME/tmp/$HOSTNAME"
+if type flock &>/dev/null; then
+ if [[ "$(readlink -f /dev/fd/7)" != "$(readlink -f "$TMPDIR/.uselock")" ]]; then
+ exec 7>"$TMPDIR/.uselock"
+ fi
+ if flock -sn 7; then
+ _logout_tmpdir_cleanup() {
+ if flock -xn 7; then
+ rm -rf -- "$(readlink -f "$TMPDIR")"
+ rm -- "$TMPDIR"
+ fi
+ }
+ trap _logout_tmpdir_cleanup EXIT
+ fi
+fi