HomeFreeBSD

Similar to r251236, improve the portion of dialog(1) API in dialog.subr
rS251242Unpublished

Unpublished Commit ยท Learn More

No further details are available.

Description

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.

Details

Provenance
dteskeAuthored on
Parents
rS251241: Factor out some common code from the libm tests. This is a bit messy
Branches
Unknown
Tags
Unknown

Event Timeline