[devtools,4/4] lib/common.sh: Make setup_workdir()/cleanup() safe for programs to not use

Message ID 20170325163441.28555-5-lukeshu@parabola.nu
State Accepted
Headers show
Series [devtools,1/4] lib/common.sh: add 'lock_close'; use it as appropriate. | expand

Commit Message

Luke Shumaker March 25, 2017, 4:34 p.m. UTC
---
 lib/common.sh | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

Patch

diff --git a/lib/common.sh b/lib/common.sh
index 6d873ed..5ef9f97 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -59,12 +59,18 @@  stat_done() {
 	printf "${BOLD}done${ALL_OFF}\n" >&2
 }
 
+_setup_workdir=false
 setup_workdir() {
 	[[ -z $WORKDIR ]] && WORKDIR=$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")
+	_setup_workdir=true
+	trap 'trap_abort' INT QUIT TERM HUP
+	trap 'trap_exit' EXIT
 }
 
 cleanup() {
-	[[ -n $WORKDIR ]] && rm -rf "$WORKDIR"
+	if [[ -n $WORKDIR ]] && $_setup_workdir; then
+		rm -rf "$WORKDIR"
+	fi
 	exit ${1:-0}
 }
 
@@ -89,9 +95,6 @@  die() {
 	cleanup 255
 }
 
-trap 'trap_abort' INT QUIT TERM HUP
-trap 'trap_exit' EXIT
-
 ##
 #  usage : in_array( $needle, $haystack )
 # return : 0 - found