subcommand: Make help text variables private.
[gsu.git] / common
diff --git a/common b/common
index e3268907a385cb5417ac60796f2f0a50fcbeed2f..ec7b8e2cfd816f1faadc6b2ffd8c45c2da37fc28 100644 (file)
--- a/common
+++ b/common
@@ -19,7 +19,7 @@ E_GSU_GETOPTS                 getopts error
 E_GSU_DIALOG                   dialog error
 E_GSU_MKTEMP                   mktemp error
 E_GSU_MENU_TREE                        invalid menu tree
-$gsu_errors
+${gsu_errors:-}
 "
        local a b i=0
        while read a b; do
@@ -90,3 +90,35 @@ _gsu_setup()
        gsu_banner_txt="${gsu_banner_txt:-set \$gsu_banner_txt to customize this message}"
        _gsu_init_errors
 }
+
+# We'd love to use mktemp -t here, but on Linux -t is deprecated in favor of
+# --tempdir, which is not supported on *BSD. Hence we have to implement our own
+# logic for -t.
+#
+# The second parameter to this function is optional. It is ignored if the
+# template ($1) is an absolute path. Conversely, if the template is a relative
+# path and a second parameter is given, $2 is assumed to be the directory in
+# which the temporary file should be created.
+gsu_make_tempfile()
+{
+       local template="$1"
+       local dir
+
+       if [[ "${template:0:1}" != '/' ]]; then # relative path
+               if (($# > 1)); then
+                       dir="$2"
+               elif [[ -n "${TMPDIR:-}" ]]; then
+                       dir="$TMPDIR"
+               else
+                       dir="/tmp"
+               fi
+               template="$dir/$template"
+       fi
+       result="$(mktemp "$template")"
+       if (($? != 0)); then
+               ret=-$E_GSU_MKTEMP
+               result="template: $template"
+               return
+       fi
+       ret=$GSU_SUCCESS
+}