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
+}
# This is like gsu_textbox() but the text is passed as a string.
gsu_msgbox()
{
+ local tmp
+
# Some versions of dialog segfault if the text is too long. Hence we
# always use a temporary file.
- local tmp="$(mktemp gsu_msgbox.XXXXXXXXXX)"
-
- if (($? != 0)); then
- ret=-$E_GSU_MKTEMP
- result='temp file for textbox'
- return
- fi
+ gsu_make_tempfile 'gsu_msgbox.XXXXXXXXXX'
+ (($ret < 0)) && return
+ tmp="$result"
trap "rm -f $tmp" EXIT
echo "$1" > "$tmp"
gsu_textbox "$tmp"