E_GSU_BAD_OPTION_TYPE invalid option type
E_GSU_BAD_ARG_COUNT invalid number of arguments
E_GSU_EDITOR failed to execute editor
+E_GSU_INVAL invalid argument
E_GSU_MKDIR failed to create directory
E_GSU_GETOPTS getopts error
E_GSU_DIALOG dialog error
E_GSU_MKTEMP mktemp error
E_GSU_MENU_TREE invalid menu tree
-$gsu_errors
+E_GSU_XCMD external command failed
+${gsu_errors:-}
"
local a b i=0
while read a b; do
#echo "a:$a, b: $b"
gsu_error_txt[i]="$b"
eval $a=$i
- i=$(($i + 1))
+ i=$((i + 1))
done << EOF
$gsu_errors
EOF
local txt="$result" err
gsu_is_a_number "$ret"
- if (($ret < 0)); then
+ if ((ret < 0)); then
gsu_msg "unknown error ($ret:$txt)"
exit 1
fi
- if (($result >= 0)); then
+ if ((result >= 0)); then
gsu_msg "unknown error ($result:$txt)"
exit 1
fi
- err=$((0 - $result))
+ err=$((0 - result))
if test -n "$txt"; then
txt="$txt: ${gsu_error_txt[$err]}"
else
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
+}