From 5b05f067655217732e94ad77b1c57a3cb7a3945e Mon Sep 17 00:00:00 2001 From: dteske Date: Sun, 2 Jun 2013 05:45:25 +0000 Subject: Similar to r251236, improve the portion of dialog(1) API in dialog.subr responsible for retrieving stored input (for the --inputbox and --password widgets). When we (Ron McDowell and I) developed the first version of bsdconfig, it used temporary files to store responses from dialog(1). That hasn't been true for a very long time, so the need to always execute some clean-up function is long-deprecated. The function that used to perform these clean- up routines for these widgets was f_dialog_inputstr(). We really don't need f_dialog_inputstr() for its originally designed purpose as all dialog invocations no longer require temporary files. Just as in r251236, redesign f_dialog_inputstr() in the following four ways: 1. Rename f_dialog_inputstr() to f_dialog_inputstr_fetch() 2. Introduce the new first-argument of $var_to_set to reduce forking 3. Create a corresponding f_dialog_inputstr_store() to abstract storage 4. Offload the sanitization to a new function, f_dialog_line_sanitize() It should be noted that f_dialog_line_sanitize() -- unlike its cousin from SVN r251236, f_dialog_data_sanitize() -- trims leading/trailing whitespace from the user's input. This helps prevent errors and common mistakes caused by the fact that the new cdialog implementation allows the right-arrow cursor key to go beyond the last byte of realtime input (adding whitespace at the end of the typed value). While we're centralizing the sanitization, let's rewrite f_dialog_input() while we're here to likewise reduce forking. The f_dialog_input() function now expects the first argument of $var_to_set instead of producing results on standard-out. These changes greatly improve readability and also improve performance. --- usr.sbin/bsdconfig/console/saver | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'usr.sbin/bsdconfig/console') diff --git a/usr.sbin/bsdconfig/console/saver b/usr.sbin/bsdconfig/console/saver index f2c9cf7..d0150a7 100755 --- a/usr.sbin/bsdconfig/console/saver +++ b/usr.sbin/bsdconfig/console/saver @@ -183,9 +183,9 @@ while :; do break ;; "$msg_timeout") # Set the screen saver timeout interval f_dialog_title "$msg_value_required" - blanktime=$( f_dialog_input "$msg_enter_timeout_period" \ - "$( f_sysrc_get blanktime )" - ) && f_sysrc_set blanktime "$blanktime" + f_dialog_input blanktime "$msg_enter_timeout_period" \ + "$( f_sysrc_get blanktime )" && + f_sysrc_set blanktime "$blanktime" f_dialog_title_restore ;; esac -- cgit v1.1