The improved exit code handling for dialog(1) also makes sense for
the other invocations of dialog. This patch abtracts out the logic
into the new internal _set_dialog_ret() function.
result="$y $x"
}
+_set_dialog_ret()
+{
+ local ec="$1"
+
+ case "$ec" in
+ 0) ret=$GSU_SUCCESS;;
+ 1) ret=1;; # cancelled
+ *)
+ result="dialog exit code $ec"
+ ret=-$E_GSU_DIALOG
+ esac
+}
+
# Open a dialog box which asks the user to input a text
#
# Usage: gsu_input_box <text> <init>
_get_geometry
g="$result"
result="$(dialog --inputbox "$text" $g "$init" 3>&1 1>&2 2>&3 3>&-)"
- if (($? != 0)); then
- ret=-$E_GSU_DIALOG
- result='inputbox'
- return
- fi
- ret=$GSU_SUCCESS
+ _set_dialog_ret $?
}
# Show the given file in a text box
ret=-$E_GSU_DIALOG
result='textbox'
- dialog --textbox "$file" $g || return
- ret=$GSU_SUCCESS
+ dialog --textbox "$file" $g
+ _set_dialog_ret $?
}
# Show a message in a text box
opts+=" $i $num"
done
result="$(dialog --menu "$gsu_banner_txt ($header)" $opts 3>&1 1>&2 2>&3 3>&-)"
- case $? in
- 0) ret=$GSU_SUCCESS;;
- 1) ret=1;; # cancelled
- *)
- result="menu error $ret"
- ret=-$E_GSU_DIALOG
- esac
+ _set_dialog_ret $?
}
_get_level()