svn commit: r259054 - in head/usr.sbin/bsdconfig: console diskmgmt docsinstall dot includes mouse networking networking/share packages password security share share/media share/packages startup sta...

Devin Teske dteske at FreeBSD.org
Sat Dec 7 00:31:08 UTC 2013


Author: dteske
Date: Sat Dec  7 00:31:01 2013
New Revision: 259054
URL: http://svnweb.freebsd.org/changeset/base/259054

Log:
  Performance and debugging enhancements:
  + Remove UNAME_P=$(...) from startup/misc -- already supplied by common.subr
  + Use f_getvar instead of $(eval echo \$$var) -- f_getvar is sub-shell free
  + Add `-e' and `-k var' options to f_eval_catch -- increasing use-cases
  + Use f_eval_catch to display errors on failure -- reducing duplicated code
  + Use f_eval_catch when we need output from a command -- improving debugging
  + Optimize f_isinter of strings.subr for performance -- now sub-shell free
  + Improve error checking on pidfiles -- using f_eval_catch and f_isinteger
  + Use $var_to_set arg of f_ifconfig_{inet,netmask} -- eliminate sub-shells
  + Use f_sprintf instead of $(printf ...) -- consolidate sub-shells
  + Use $var_to_set arg of f_route_get_default -- eliminate sub-shells
  + Add f_count to replace $(set -- ...;echo $#) -- eliminate sub-shells
  + Add f_count_ifs to replace $(IFS=x;set -- ...;echo $#) -- no sub-shells
  + Replace var="$var${var:+ }..." in loops with var="$var ..." with a follow-
    up var="${var# }" to trim leading whitespace -- optimize loops
  + Use $var_to_set arg of f_resolv_conf_nameservers -- eliminate sub-shells
  + Comments for the f_eval_catch function
  + Remove a duplicate `local ... desc ...' in f_device_get_all of device.subr
  + Use $var_to_set arg of f_device_capacity -- eliminate sub-shells
  + Whitespace fixes in f_dialog_init of dialog.subr
  + Optimize f_inet_atoi of media/tcpip.subr for performance -- sub-shell free
  + In several cases, send stderr to /dev/null -- clean up runtime execution
  + Change f_err of common.subr to go to program stderr not terminal stderr,
    allowing redirection of output from functions that use f_err
  + Disable debugging when using f_getvar to get variable argument to
    f_startup_rcconf_map_expand of startup/rcconf.subr
  + Use f_replace_all instead of $(echo ... | tr | sed) -- performance
  + Add a $var_to_set option to f_index_{file,menusel_{command,keyword}} of
    common.subr -- centralize sub-shells

Modified:
  head/usr.sbin/bsdconfig/console/console
  head/usr.sbin/bsdconfig/console/font
  head/usr.sbin/bsdconfig/console/keymap
  head/usr.sbin/bsdconfig/console/repeat
  head/usr.sbin/bsdconfig/console/saver
  head/usr.sbin/bsdconfig/console/screenmap
  head/usr.sbin/bsdconfig/console/ttys
  head/usr.sbin/bsdconfig/diskmgmt/diskmgmt
  head/usr.sbin/bsdconfig/docsinstall/docsinstall
  head/usr.sbin/bsdconfig/dot/dot
  head/usr.sbin/bsdconfig/includes/includes
  head/usr.sbin/bsdconfig/mouse/disable
  head/usr.sbin/bsdconfig/mouse/enable
  head/usr.sbin/bsdconfig/mouse/flags
  head/usr.sbin/bsdconfig/mouse/mouse
  head/usr.sbin/bsdconfig/mouse/port
  head/usr.sbin/bsdconfig/mouse/type
  head/usr.sbin/bsdconfig/networking/defaultrouter
  head/usr.sbin/bsdconfig/networking/devices
  head/usr.sbin/bsdconfig/networking/hostname
  head/usr.sbin/bsdconfig/networking/nameservers
  head/usr.sbin/bsdconfig/networking/networking
  head/usr.sbin/bsdconfig/networking/share/device.subr
  head/usr.sbin/bsdconfig/networking/share/hostname.subr
  head/usr.sbin/bsdconfig/networking/share/ipaddr.subr
  head/usr.sbin/bsdconfig/networking/share/media.subr
  head/usr.sbin/bsdconfig/networking/share/netmask.subr
  head/usr.sbin/bsdconfig/networking/share/resolv.subr
  head/usr.sbin/bsdconfig/networking/share/routing.subr
  head/usr.sbin/bsdconfig/networking/share/services.subr
  head/usr.sbin/bsdconfig/packages/packages
  head/usr.sbin/bsdconfig/password/password
  head/usr.sbin/bsdconfig/security/kern_securelevel
  head/usr.sbin/bsdconfig/security/security
  head/usr.sbin/bsdconfig/share/common.subr
  head/usr.sbin/bsdconfig/share/device.subr
  head/usr.sbin/bsdconfig/share/dialog.subr
  head/usr.sbin/bsdconfig/share/keymap.subr
  head/usr.sbin/bsdconfig/share/media/cdrom.subr
  head/usr.sbin/bsdconfig/share/media/common.subr
  head/usr.sbin/bsdconfig/share/media/dos.subr
  head/usr.sbin/bsdconfig/share/media/floppy.subr
  head/usr.sbin/bsdconfig/share/media/ftp.subr
  head/usr.sbin/bsdconfig/share/media/nfs.subr
  head/usr.sbin/bsdconfig/share/media/tcpip.subr
  head/usr.sbin/bsdconfig/share/media/ufs.subr
  head/usr.sbin/bsdconfig/share/media/usb.subr
  head/usr.sbin/bsdconfig/share/mustberoot.subr
  head/usr.sbin/bsdconfig/share/packages/categories.subr
  head/usr.sbin/bsdconfig/share/packages/index.subr
  head/usr.sbin/bsdconfig/share/packages/packages.subr
  head/usr.sbin/bsdconfig/share/strings.subr
  head/usr.sbin/bsdconfig/share/sysrc.subr
  head/usr.sbin/bsdconfig/startup/misc
  head/usr.sbin/bsdconfig/startup/rcadd
  head/usr.sbin/bsdconfig/startup/rcconf
  head/usr.sbin/bsdconfig/startup/rcdelete
  head/usr.sbin/bsdconfig/startup/rcedit
  head/usr.sbin/bsdconfig/startup/rcvar
  head/usr.sbin/bsdconfig/startup/share/rcconf.subr
  head/usr.sbin/bsdconfig/startup/share/rcedit.subr
  head/usr.sbin/bsdconfig/startup/share/rcvar.subr
  head/usr.sbin/bsdconfig/startup/startup
  head/usr.sbin/bsdconfig/timezone/share/zones.subr
  head/usr.sbin/bsdconfig/timezone/timezone
  head/usr.sbin/bsdconfig/ttys/ttys
  head/usr.sbin/bsdconfig/usermgmt/groupadd
  head/usr.sbin/bsdconfig/usermgmt/groupdel
  head/usr.sbin/bsdconfig/usermgmt/groupedit
  head/usr.sbin/bsdconfig/usermgmt/groupinput
  head/usr.sbin/bsdconfig/usermgmt/share/group_input.subr
  head/usr.sbin/bsdconfig/usermgmt/share/user_input.subr
  head/usr.sbin/bsdconfig/usermgmt/useradd
  head/usr.sbin/bsdconfig/usermgmt/userdel
  head/usr.sbin/bsdconfig/usermgmt/useredit
  head/usr.sbin/bsdconfig/usermgmt/userinput
  head/usr.sbin/bsdconfig/usermgmt/usermgmt

Modified: head/usr.sbin/bsdconfig/console/console
==============================================================================
--- head/usr.sbin/bsdconfig/console/console	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/console/console	Sat Dec  7 00:31:01 2013	(r259054)
@@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 

Modified: head/usr.sbin/bsdconfig/console/font
==============================================================================
--- head/usr.sbin/bsdconfig/console/font	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/console/font	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 
@@ -174,14 +174,16 @@ esac
 
 [ "$f8" -a "$f14" -a "$f16" ] || f_die 1 "$msg_unknown_font_selection"
 
-f_sysrc_set font8x8 "$f8" || f_die
-f_sysrc_set font8x14 "$f14" || f_die
-f_sysrc_set font8x16 "$f16" || f_die
+f_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x8 "%s"' "$f8" || f_die
+f_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x14 "%s"' "$f14" || f_die
+f_eval_catch "$0" f_sysrc_set 'f_sysrc_set font8x16 "%s"' "$f16" || f_die
 
 if [ "$mc_start" ]; then
-	f_sysrc_set mousechar_start "$mc_start" || f_die
+	f_eval_catch "$0" f_sysrc_set \
+		'f_sysrc_set mousechar_start "%s"' "$mc_start" || f_die
 else
-	f_sysrc_delete mousechar_start || f_die
+	f_eval_catch "$0" f_sysrc_delete \
+		'f_sysrc_delete mousechar_start' || f_die
 fi
 
 exit $SUCCESS

Modified: head/usr.sbin/bsdconfig/console/keymap
==============================================================================
--- head/usr.sbin/bsdconfig/console/keymap	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/console/keymap	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 
@@ -246,10 +246,8 @@ while :; do
 	keymap_name=
 	mtag="${mtag# }" # remove single leading-space if-present
 	for name in $KEYMAP_NAMES; do
-		if [ "$( eval echo \"\$msg_$name\" )" = "$mtag" ]; then
-			keymap_name="$name"
-			break
-		fi
+		debug= f_getvar msg_$name msg
+		[ "$msg" = "$mtag" ] && keymap_name="$name" break
 	done
 
 	[ "$keymap_name" ] || continue
@@ -319,7 +317,8 @@ while :; do
 	esac
 
 	if [ "$keymap_to_set" ]; then
-		f_sysrc_set keymap "$keymap_to_set" || f_die
+		f_eval_catch "$0" f_sysrc_set \
+			'f_sysrc_set keymap "%s"' "$keymap_to_set" || f_die
 		break
 	else
 		f_die 1 "$msg_unknown_keymap"

Modified: head/usr.sbin/bsdconfig/console/repeat
==============================================================================
--- head/usr.sbin/bsdconfig/console/repeat	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/console/repeat	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 
@@ -129,7 +129,8 @@ case "$mtag" in
 esac
 
 if [ "$repeat_rate_to_set" ]; then
-	f_sysrc_set keyrate "$repeat_rate_to_set" || f_die
+	f_eval_catch "$0" f_sysrc_set \
+		'f_sysrc_set keyrate "%s"' "$repeat_rate_to_set" || f_die
 	break
 else
 	f_die 1 "$msg_unknown_repeat_rate"

Modified: head/usr.sbin/bsdconfig/console/saver
==============================================================================
--- head/usr.sbin/bsdconfig/console/saver	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/console/saver	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 
@@ -144,7 +144,8 @@ case "$mtag" in
 	f_dialog_title "$msg_value_required"
 	f_dialog_input blanktime "$msg_enter_timeout_period" \
 	               "$( f_sysrc_get blanktime )" &&
-		f_sysrc_set blanktime "$blanktime" || f_die
+		f_eval_catch "$0" f_sysrc_set \
+			'f_sysrc_set blanktime "%s"' "$blanktime" || f_die
 	f_dialog_title_restore
 	exit $SUCCESS
 esac
@@ -180,7 +181,8 @@ case "$mtag" in
 esac
 
 if [ "$saver_to_set" ]; then
-	f_sysrc_set saver "$saver_to_set" || f_die
+	f_eval_catch "$0" f_sysrc_set \
+		'f_sysrc_set saver "%s"' "$saver_to_set" || f_die
 	break
 else
 	f_die 1 "$msg_unknown_saver"

Modified: head/usr.sbin/bsdconfig/console/screenmap
==============================================================================
--- head/usr.sbin/bsdconfig/console/screenmap	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/console/screenmap	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 
@@ -141,7 +141,8 @@ case "$mtag" in
 esac
 
 if [ "$scrnmap_to_set" ]; then
-	f_sysrc_set scrnmap "$scrnmap_to_set" || f_die
+	f_eval_catch "$0" f_sysrc_set \
+		'f_sysrc_set scrnmap "%s"' "$scrnmap_to_set" || f_die
 	break
 else
 	f_die 1 "$msg_unknown_screenmap_selection"

Modified: head/usr.sbin/bsdconfig/console/ttys
==============================================================================
--- head/usr.sbin/bsdconfig/console/ttys	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/console/ttys	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 
@@ -108,23 +108,28 @@ dialog_menu_main()
 #
 ttys_set_type()
 {
+	local funcname=ttys_set_type
 	local consterm="$1" err
 
 	#
 	# Create new temporary file to write our ttys(5) update with new types.
 	#
-	local tmpfile="$( mktemp -t "$pgm" )"
-	[ "$tmpfile" ] || return $FAILURE
+	local tmpfile
+	f_eval_catch -k tmpfile $funcname mktemp 'mktemp -t "%s"' "$pgm" ||
+		return $FAILURE
 
 	#
 	# Fixup permissions and ownership (mktemp(1) creates the temporary file
 	# with 0600 permissions -- change the permissions and ownership to
 	# match ttys(5) before we write it out and mv(1) it into place).
 	#
-	local mode="$( stat -f '%#Lp' "$ETC_TTYS" 2> /dev/null )"
-	local owner="$( stat -f '%u:%g' "$ETC_TTYS" 2> /dev/null )"
-	f_quietly chmod "${mode:-0644}" "$tmpfile"
-	f_quietly chown "${owner:-root:wheel}" "$tmpfile"
+	local mode owner
+	f_eval_catch -dk mode $funcname stat \
+		'stat -f "%%#Lp" "%s"' "$ETC_TTYS" || mode=0644
+	f_eval_catch -dk owner $funcname stat \
+		'stat -f "%%u:%%g" "%s"' "$ETC_TTYS" || owner="root:wheel"
+	f_eval_catch -d $funcname chmod 'chmod "%s" "%s"' "$mode" "$tmpfile"
+	f_eval_catch -d $funcname chown 'chown "%s" "%s"' "$owner" "$tmpfile"
 
 	#
 	# Operate on ttys(5), replacing only the types of `ttyv*' and
@@ -156,10 +161,8 @@ ttys_set_type()
 		f_dialog_msgbox "$err"
 		return $FAILURE
 	fi
-	if ! err=$( mv -f "$tmpfile" "$ETC_TTYS" 2>&1 ); then
-		f_dialog_msgbox "$err"
+	f_eval_catch $funcname mv 'mv -f "%s" "%s"' "$tmpfile" "$ETC_TTYS" ||
 		return $FAILURE
-	fi
 
 	return $SUCCESS
 }

Modified: head/usr.sbin/bsdconfig/diskmgmt/diskmgmt
==============================================================================
--- head/usr.sbin/bsdconfig/diskmgmt/diskmgmt	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/diskmgmt/diskmgmt	Sat Dec  7 00:31:01 2013	(r259054)
@@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="050.diskmgmt"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 

Modified: head/usr.sbin/bsdconfig/docsinstall/docsinstall
==============================================================================
--- head/usr.sbin/bsdconfig/docsinstall/docsinstall	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/docsinstall/docsinstall	Sat Dec  7 00:31:01 2013	(r259054)
@@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="020.docsinstall"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 

Modified: head/usr.sbin/bsdconfig/dot/dot
==============================================================================
--- head/usr.sbin/bsdconfig/dot/dot	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/dot/dot	Sat Dec  7 00:31:01 2013	(r259054)
@@ -41,8 +41,8 @@ BSDCFG_LIBE="/usr/libexec/bsdconfig" APP
 f_include_lang $BSDCFG_LIBE/include/messages.subr
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 

Modified: head/usr.sbin/bsdconfig/includes/includes
==============================================================================
--- head/usr.sbin/bsdconfig/includes/includes	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/includes/includes	Sat Dec  7 00:31:01 2013	(r259054)
@@ -41,8 +41,8 @@ BSDCFG_LIBE="/usr/libexec/bsdconfig" APP
 f_include_lang $BSDCFG_LIBE/include/messages.subr
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ GLOBALS
 

Modified: head/usr.sbin/bsdconfig/mouse/disable
==============================================================================
--- head/usr.sbin/bsdconfig/mouse/disable	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/mouse/disable	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 
@@ -73,12 +73,16 @@ f_mustberoot_init
 #
 # Stop the mouse daemon
 #
-[ -r "$MOUSED_PIDFILE" ] &&
-	f_quietly kill "$( cat "$MOUSED_PIDFILE" )"
-f_sysrc_set moused_enable "NO" || f_die
-f_sysrc_set moused_type "NO" || f_die
-f_sysrc_delete moused_port || f_die
-f_sysrc_delete moused_flags || f_die
+if [ -r "$MOUSED_PIDFILE" ]; then
+	f_eval_catch -dk pid "$0" cat 'cat "%s"' "$MOUSED_PIDFILE" &&
+		f_isinteger "$pid" &&
+		[ $pid -gt 0 ] &&
+		f_eval_catch -d "$0" kill 'kill %s' $pid
+fi
+f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_enable NO' || f_die
+f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_type NO' || f_die
+f_eval_catch "$0" f_sysrc_delete 'f_sysrc_delete moused_port' || f_die
+f_eval_catch "$0" f_sysrc_delete 'f_sysrc_delete moused_flags' || f_die
 
 #
 # Message box

Modified: head/usr.sbin/bsdconfig/mouse/enable
==============================================================================
--- head/usr.sbin/bsdconfig/mouse/enable	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/mouse/enable	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 
@@ -85,10 +85,15 @@ flags=$( f_sysrc_get moused_flags )
 # Start the mouse daemon
 #
 f_dialog_info "$msg_trying_to_start_the_mouse_daemon"
-[ -r "$MOUSED_PIDFILE" ] &&
-	f_quietly kill "$( cat "$MOUSED_PIDFILE" 2> /dev/null )"
-f_quietly vidcontrol -m on
-f_quietly moused -t "$type" -p "$port" $flags
+if [ -r "$MOUSED_PIDFILE" ]; then
+	f_eval_catch -dk pid "$0" cat 'cat "%s"' "$MOUSED_PIDFILE" &&
+		f_isinteger "$pid" &&
+		[ $pid -gt 0 ] &&
+		f_eval_catch -d "$0" kill 'kill %s' $pid
+fi
+f_eval_catch -d "$0" vidcontrol 'vidcontrol -m on'
+f_eval_catch -d "$0" moused \
+	'moused -t "%s" -p "%s" %s' "$type" "$port" "$flags"
 
 #
 # Confirm with the user that the mouse is working
@@ -101,14 +106,19 @@ f_dialog_title_restore
 #
 # Stop the mouse daemon
 #
-f_quietly vidcontrol -m off
+f_eval_catch -d "$0" vidcontrol 'vidcontrol -m off'
 if [ $retval -eq $DIALOG_OK ]; then
-	f_sysrc_set moused_enable "YES" || f_die
-	ln -fs /dev/sysmouse /dev/mouse || f_die # backwards compat
+	f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_enable YES' || f_die
+	f_eval_catch "$0" ln \
+		'ln -fs /dev/sysmouse /dev/mouse' || f_die # backwards compat
 else
-	[ -r "$MOUSED_PIDFILE" ] &&
-		f_quietly kill "$( cat "$MOUSED_PIDFILE" )"
-	f_sysrc_set moused_enable "NO" || f_die
+	if [ -r "$MOUSED_PIDFILE" ]; then
+		f_eval_catch -dk pid "$0" cat 'cat "%s"' "$MOUSED_PIDFILE" &&
+			f_isinteger "$pid" &&
+			[ $pid -gt 0 ] &&
+			f_eval_catch -d "$0" kill 'kill %s' $pid
+	fi
+	f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_enable NO' || f_die
 fi
 
 exit $SUCCESS

Modified: head/usr.sbin/bsdconfig/mouse/flags
==============================================================================
--- head/usr.sbin/bsdconfig/mouse/flags	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/mouse/flags	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ CONFIGURATION
 
@@ -86,7 +86,7 @@ f_dialog_title_restore
 #
 # Save the new value
 #
-f_sysrc_set moused_flags "$flags" || f_die
+f_eval_catch "$0" f_sysrc_set 'f_sysrc_set moused_flags "%s"' "$flags" || f_die
 
 exit $SUCCESS
 

Modified: head/usr.sbin/bsdconfig/mouse/mouse
==============================================================================
--- head/usr.sbin/bsdconfig/mouse/mouse	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/mouse/mouse	Sat Dec  7 00:31:01 2013	(r259054)
@@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 

Modified: head/usr.sbin/bsdconfig/mouse/port
==============================================================================
--- head/usr.sbin/bsdconfig/mouse/port	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/mouse/port	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 
@@ -141,7 +141,8 @@ case "$mtag" in
 esac
 
 if [ "$moused_port_to_set" ]; then
-	f_sysrc_set moused_port "$moused_port_to_set" || f_die
+	f_eval_catch "$0" f_sysrc_set \
+		'f_sysrc_set moused_port "%s"' "$moused_port_to_set" || f_die
 else
 	f_die 1 "$msg_unknown_mouse_port_selection"
 fi

Modified: head/usr.sbin/bsdconfig/mouse/type
==============================================================================
--- head/usr.sbin/bsdconfig/mouse/type	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/mouse/type	Sat Dec  7 00:31:01 2013	(r259054)
@@ -38,8 +38,8 @@ f_include $BSDCFG_SHARE/sysrc.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="110.mouse"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 
@@ -157,7 +157,8 @@ case "$mtag" in
 esac
 
 if [ "$moused_type_to_set" ]; then
-	f_sysrc_set moused_type "$moused_type_to_set" || f_die
+	f_eval_catch "$0" f_sysrc_set \
+		'f_sysrc_set moused_type "%s"' "$moused_type_to_set" || f_die
 else
 	f_die 1 "$msg_unknown_mouse_protocol_selection"
 fi

Modified: head/usr.sbin/bsdconfig/networking/defaultrouter
==============================================================================
--- head/usr.sbin/bsdconfig/networking/defaultrouter	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/defaultrouter	Sat Dec  7 00:31:01 2013	(r259054)
@@ -28,6 +28,9 @@
 #
 ############################################################ INCLUDES
 
+# Prevent device.subr (included indirectly) from auto scanning on load
+DEVICE_SELF_SCAN_ALL=NO
+
 BSDCFG_SHARE="/usr/share/bsdconfig"
 . $BSDCFG_SHARE/common.subr || exit 1
 f_dprintf "%s: loading includes..." "$0"
@@ -38,8 +41,8 @@ f_include $BSDCFG_SHARE/networking/routi
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ MAIN
 

Modified: head/usr.sbin/bsdconfig/networking/devices
==============================================================================
--- head/usr.sbin/bsdconfig/networking/devices	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/devices	Sat Dec  7 00:31:01 2013	(r259054)
@@ -49,8 +49,8 @@ f_include $BSDCFG_SHARE/networking/netma
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ MAIN
 
@@ -143,8 +143,8 @@ while :; do
 	# Fill in IP address/netmask from active settings if no
 	# configuration could be extrapolated from rc.conf(5)
 	#
-	[ "$_ipaddr"  ] || _ipaddr=$( f_ifconfig_inet $interface )
-	[ "$_netmask" ] || _netmask=$( f_ifconfig_netmask $interface )
+	[ "$_ipaddr"  ] || f_ifconfig_inet $interface _ipaddr
+	[ "$_netmask" ] || f_ifconfig_netmask $interface _netmask
 
 	# Get the extra options (this always comes from rc.conf(5))
 	_options=$( f_ifconfig_options $interface )

Modified: head/usr.sbin/bsdconfig/networking/hostname
==============================================================================
--- head/usr.sbin/bsdconfig/networking/hostname	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/hostname	Sat Dec  7 00:31:01 2013	(r259054)
@@ -41,8 +41,8 @@ f_include $BSDCFG_SHARE/networking/hostn
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ MAIN
 

Modified: head/usr.sbin/bsdconfig/networking/nameservers
==============================================================================
--- head/usr.sbin/bsdconfig/networking/nameservers	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/nameservers	Sat Dec  7 00:31:01 2013	(r259054)
@@ -41,8 +41,8 @@ f_include $BSDCFG_SHARE/networking/resol
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ MAIN
 

Modified: head/usr.sbin/bsdconfig/networking/networking
==============================================================================
--- head/usr.sbin/bsdconfig/networking/networking	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/networking	Sat Dec  7 00:31:01 2013	(r259054)
@@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/mustberoot.subr
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ FUNCTIONS
 

Modified: head/usr.sbin/bsdconfig/networking/share/device.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/device.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/device.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -40,6 +40,7 @@ f_include $BSDCFG_SHARE/networking/media
 f_include $BSDCFG_SHARE/networking/netmask.subr
 f_include $BSDCFG_SHARE/networking/resolv.subr
 f_include $BSDCFG_SHARE/networking/routing.subr
+f_include $BSDCFG_SHARE/strings.subr
 f_include $BSDCFG_SHARE/sysrc.subr
 
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking"
@@ -163,6 +164,7 @@ f_dialog_menu_netdev()
 #
 f_dialog_menu_netdev_edit()
 {
+	local funcname=f_dialog_menu_netdev_edit
 	local interface="$1" ipaddr="$2" netmask="$3" options="$4" dhcp="$5"
 	local prompt menu_list height width rows
 
@@ -175,7 +177,7 @@ f_dialog_menu_netdev_edit()
 	      dhcp_orig="$5"
 
 	local hline="$hline_arrows_tab_enter"
-	prompt=$( printf "$msg_network_configuration" "$interface" )
+	f_sprintf prompt "$msg_network_configuration" "$interface"
 
 	#
 	# Loop forever until the user has finished configuring the different
@@ -254,8 +256,9 @@ f_dialog_menu_netdev_edit()
 		      # are made is changed parts of the system may hang.
 		      #
 		      if f_nfs_mounted && ! f_jailed; then
-		      	local setting="$( printf "$msg_current_dhcp_status" \
-		      	                         "$interface" "$dhcp_status" )"
+			local setting
+			f_sprintf setting "$msg_current_dhcp_status" \
+		      	                  "$interface" "$dhcp_status"
 			f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" ||
 		      		continue
 		      fi
@@ -269,7 +272,7 @@ f_dialog_menu_netdev_edit()
 		      	trap - SIGINT
 		      	( # Execute within sub-shell to allow/catch Ctrl-C
 		      	  trap 'exit $FAILURE' SIGINT
-		      	  msg=$( printf "$msg_scanning_for_dhcp" "$interface" )
+			  f_sprintf msg "$msg_scanning_for_dhcp" "$interface"
 		      	  if [ "$USE_XDIALOG" ]; then
 		      	  	(
 		      	  	  f_quietly ifconfig "$interface" delete
@@ -319,14 +322,16 @@ f_dialog_menu_netdev_edit()
 
 		local value=
 		if [ "$dhcp" ]; then
-			f_sysrc_delete defaultrouter
+			f_eval_catch $funcname f_sysrc_delete \
+				'f_sysrc_delete defaultrouter'
 			value=DHCP
 		else
 			value="inet $ipaddr netmask $netmask"
 			value="$value${options:+ }$options"
 		fi
 
-		f_sysrc_set ifconfig_$interface "$value"
+		f_eval_catch $funcname f_sysrc_set \
+			'f_sysrc_set "ifconfig_%s" "%s"' "$interface" "$value"
 	fi
 
 	#
@@ -337,10 +342,12 @@ f_dialog_menu_netdev_edit()
 		then
 			f_show_info "$msg_bring_interface_up" "$interface"
 
-			local dr="$( f_sysrc_get defaultrouter )" err
+			local dr="$( f_sysrc_get defaultrouter )"
 			if [ "$dr" = "NO" -o ! "$dr" ]; then
-				dr=$( f_route_get_default )
-				[ "$dr" ] && f_sysrc_set defaultrouter "$dr"
+				f_route_get_default dr
+				[ "$dr" ] && f_eval_catch \
+					$funcname f_sysrc_set \
+					'f_sysrc_set defaultrouter "%s"' "$dr"
 			fi
 			#
 			# Make a backup of resolv.conf(5) before using
@@ -351,16 +358,13 @@ f_dialog_menu_netdev_edit()
 			# resolv.conf(5) by-default upon termination).
 			#
 			f_quietly cp -fp "$RESOLV_CONF" "$RESOLV_CONF.$$"
-			err=$( ifconfig $interface inet $ipaddr \
-			       	netmask $netmask $options 2>&1 )
-			if [ $? -eq $SUCCESS ]; then
-				if [ "$dr" -a "$dr" != "NO" ]; then
-					err=$( route add default "$dr" 2>&1 )
-					[ $? -eq $SUCCESS ] || \
-						dialog_msgbox "$err"
-				fi
-			else
-				dialog_msgbox "$err"
+			if f_eval_catch $funcname ifconfig \
+				'ifconfig "%s" inet "%s" netmask "%s" %s' \
+				"$interface" "$ipaddr" "$netmask" "$options"
+			then
+				[ "$dr" -a "$dr" != "NO" ] &&
+					f_eval_catch $funcname route \
+						'route add default "%s"' "$dr"
 			fi
 			if cmp -s "$RESOLV_CONF" "$RESOLV_CONF.$$"; then
 				f_quietly rm -f "$RESOLV_CONF.$$"

Modified: head/usr.sbin/bsdconfig/networking/share/hostname.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/hostname.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/hostname.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -95,6 +95,7 @@ f_dialog_validate_hostname()
 #
 f_dialog_input_hostname()
 {
+	local funcname=f_dialog_input_hostname
 	local hostname="$( f_sysrc_get 'hostname:-$(hostname)' )"
 	local hostname_orig="$hostname" # for change-tracking
 
@@ -120,7 +121,8 @@ f_dialog_input_hostname()
 	#
 	if [ "$hostname" != "$hostname_orig" ]; then
 		f_dialog_info "$msg_saving_hostname"
-		f_sysrc_set hostname "$hostname"
+		f_eval_catch $funcname f_sysrc_set \
+			'f_sysrc_set hostname "%s"' "$hostname"
 	fi
 
 	#

Modified: head/usr.sbin/bsdconfig/networking/share/ipaddr.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/ipaddr.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/ipaddr.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -144,13 +144,14 @@ f_dialog_input_ipaddr()
 	# system may hang (if any NFS mounts are using that interface).
 	#
 	if f_nfs_mounted && ! f_jailed; then
-		local setting="$( printf "$msg_current_ipaddr" \
-		                         "$interface" "$_ipaddr" )"
+		local setting
+		f_sprintf setting "$msg_current_ipaddr" "$interface" "$_ipaddr"
 		f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" ||
 			return $DIALOG_CANCEL
 	fi
 
-	local msg="$( printf "$msg_please_enter_new_ip_addr" "$interface" )"
+	local msg
+	f_sprintf msg "$msg_please_enter_new_ip_addr" "$interface"
 
 	#
 	# Loop until the user provides taint-free input.

Modified: head/usr.sbin/bsdconfig/networking/share/media.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/media.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/media.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -115,13 +115,15 @@ f_dialog_input_options()
 	# the system may hang (if any NFS mounts are using that interface).
 	#
 	if f_nfs_mounted && ! f_jailed; then
-		local setting="$( printf "$msg_current_options" \
-		                         "$interface" "$options" )"
+		local setting
+		f_sprintf setting "$msg_current_options" \
+		                  "$interface" "$options"
 		f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" ||
 			return $DIALOG_CANCEL
 	fi
 
-	local msg="$( printf "$msg_please_enter_mediaopts" "$interface" )"
+	local msg
+	f_sprintf msg "$msg_please_enter_mediaopts" "$interface"
 	local hline="$hline_alnum_punc_tab_enter"
 
 	local _options
@@ -162,8 +164,9 @@ f_dialog_menu_media_options()
 	# the system may hang (if any NFS mounts are using that interface).
 	#
 	if f_nfs_mounted && ! f_jailed; then
-		local setting="$( printf "$msg_current_options" \
-		                         "$interface" "$_options" )"
+		local setting
+		f_sprintf setting "$msg_current_options" \
+		                  "$interface" "$_options"
 		f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" ||
 			return $DIALOG_CANCEL
 	fi
@@ -196,11 +199,11 @@ f_dialog_menu_media_options()
 
 	local msg
 	if [ "$USE_XDIALOG" ]; then
-		msg=$( printf "$xmsg_supported_media_options" \
-		       		"$interface" "$interface" )
+		f_sprintf msg "$xmsg_supported_media_options" \
+		              "$interface" "$interface"
 	else
-		msg=$( printf "$msg_supported_media_options" \
-		       		"$interface" "$interface" )
+		f_sprintf msg "$msg_supported_media_options" \
+		              "$interface" "$interface"
 	fi
 
 	local hline="$hline_arrows_tab_enter"

Modified: head/usr.sbin/bsdconfig/networking/share/netmask.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/netmask.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/netmask.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -94,8 +94,9 @@ f_dialog_input_netmask()
 	# the system may hang (if any NFS mounts are using that interface).
 	#
 	if f_nfs_mounted && ! f_jailed; then
-		local setting="$( printf "$msg_current_subnet" \
-		                         "$interface" "$_netmask" )"
+		local setting
+		f_sprintf setting "$msg_current_subnet" \
+		                  "$interface" "$_netmask"
 		f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" ||
 			return $DIALOG_CANCEL
 	fi
@@ -103,7 +104,8 @@ f_dialog_input_netmask()
 	#
 	# Loop until the user provides taint-free input.
 	#
-	local msg="$( printf "$msg_please_enter_subnet_mask" "$interface" )"
+	local msg
+	f_sprintf msg "$msg_please_enter_subnet_mask" "$interface"
 	while :; do
 		#
 		# Return error status if:

Modified: head/usr.sbin/bsdconfig/networking/share/resolv.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/resolv.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/resolv.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -162,20 +162,23 @@ END {
 '
 f_dialog_resolv_conf_update()
 {
+	local funcname=f_dialog_resolv_conf_update
 	local hostname="$1"
 
 	#
 	# Extrapolate the desired domain search parameter for resolv.conf(5)
 	#
-	local search ndots domain="${hostname#*.}"
+	local search nfields ndots domain="${hostname#*.}"
 	if [ "$RESOLVER_SEARCH_DOMAINS_ALL" = "1" ]; then
-		search=""
-		ndots=$( IFS=.; set -- $domain; echo $(( $# - 1 )) )
+		search=
+		IFS=. f_count_ifs nfields "$domain"
+		ndots=$(( $nfields - 1 ))
 		while [ $ndots -ge ${RESOLVER_SEARCH_NDOTS:-1} ]; do
-			search="$search${search:+ }$domain"
+			search="$search $domain"
 			domain="${domain#*.}"
 			ndots=$(( $ndots - 1 ))
 		done
+		search="${search# }"
 		domain="${hostname#*.}"
 	else
 		search="$domain"
@@ -194,8 +197,9 @@ f_dialog_resolv_conf_update()
 		# Create a new temporary file to write our resolv.conf(5)
 		# update with our new `domain' and `search' directives.
 		#
-		local tmpfile="$( mktemp -t "$pgm" )"
-		[ "$tmpfile" ] || return $DIALOG_CANCEL
+		local tmpfile
+		f_eval_catch -dk tmpfile $funcname mktemp \
+			'mktemp -t "%s"' "$tmpfile" || return $DIALOG_CANCEL
 
 		#
 		# Fixup permissions and ownership (mktemp(1) creates the
@@ -203,10 +207,16 @@ f_dialog_resolv_conf_update()
 		# permissions and ownership to match resolv.conf(5) before
 		# we write it out and mv(1) it into place).
 		#
-		local mode="$( stat -f '%#Lp' "$RESOLV_CONF" 2> /dev/null )"
-		local owner="$( stat -f '%u:%g' "$RESOLV_CONF" 2> /dev/null )"
-		f_quietly chmod "${mode:-0644}" "$tmpfile"
-		f_quietly chown "${owner:-root:wheel}" "$tmpfile"
+		local mode owner
+		f_eval_catch -dk mode $funcname stat \
+			'stat -f "%%#Lp" "%s"' "$RESOLV_CONF" || mode=0644
+		f_eval_catch -dk owner $funcname stat \
+			'stat -f "%%u:%%g" "%s"' "$RESOLV_CONF" ||
+			owner="root:wheel"
+		f_eval_catch -d $funcname chmod \
+			'chmod "%s" "%s"' "$mode" "$tmpfile"
+		f_eval_catch -d $funcname chown \
+			'chown "%s" "%s"' "$owner" "$tmpfile"
 
 		#
 		# Operate on resolv.conf(5), replacing only the last
@@ -237,7 +247,8 @@ f_dialog_resolv_conf_update()
 		#
 		echo "$new_contents" | tail -r > "$tmpfile" ||
 			return $DIALOG_CANCEL
-		f_quietly mv "$tmpfile" "$RESOLV_CONF"
+		f_eval_catch -d $funcname mv \
+			'mv "%s" "%s"' "$tmpfile" "$RESOLV_CONF"
 
 	fi
 }
@@ -288,6 +299,7 @@ END { if ( ! found ) exit 3 }
 '
 f_dialog_input_nameserver()
 {
+	local funcname=f_dialog_input_nameserver
 	local index="${1:-0}" old_ns="$2" new_ns
 	local ns="$old_ns"
 
@@ -344,17 +356,23 @@ f_dialog_input_nameserver()
 		#
 		# Create a new temporary file to write our new resolv.conf(5)
 		#
-		local tmpfile="$( mktemp -t "$pgm" )"
-		[ "$tmpfile" ] || return $DIALOG_CANCEL
+		local tmpfile
+		f_eval_catch -dk tmpfile $funcname mktemp \
+			'mktemp -t "%s"' "$pgm" || return $DIALOG_CANCEL
 
 		#
 		# Quietly fixup permissions and ownership
 		#
 		local mode owner
-		mode=$( stat -f '%#Lp' "$RESOLV_CONF" 2> /dev/null )
-		owner=$( stat -f '%u:%g' "$RESOLV_CONF" 2> /dev/null )
-		f_quietly chmod "${mode:-0644}" "$tmpfile"
-		f_quietly chown "${owner:-root:wheel}" "$tmpfile"
+		f_eval_catch -dk mode $funcname stat \
+			'stat -f "%%#Lp" "%s"' "$RESOLV_CONF" || mode=0644
+		f_eval_catch -dk owner $funcname stat \
+			'stat -f "%%u:%%g" "%s"' "$RESOLV_CONF" ||
+			owner="root:wheel"
+		f_eval_catch -d $funcname chmod \
+			'chmod "%s" "%s"' "$mode" "$tmpfile"
+		f_eval_catch -d $funcname chown \
+			'chown "%s" "%s"' "$owner" "$tmpfile"
 
 		#
 		# Operate on resolv.conf(5)
@@ -383,7 +401,8 @@ f_dialog_input_nameserver()
 		# file into place.
 		#
 		echo "$new_contents" > "$tmpfile" || return $DIALOG_CANCEL
-		f_quietly mv "$tmpfile" "$RESOLV_CONF"
+		f_eval_catch -d $funcname mv \
+			'mv "%s" "%s"' "$tmpfile" "$RESOLV_CONF"
 	fi
 }
 
@@ -409,7 +428,8 @@ f_dialog_menu_nameservers()
 		#
 		# Re/Build list of nameservers
 		#
-		local nameservers="$( f_resolv_conf_nameservers )"
+		local nameservers
+		f_resolv_conf_nameservers nameservers
 		menu_list=$(
 			index=1
 

Modified: head/usr.sbin/bsdconfig/networking/share/routing.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/routing.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/routing.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -35,6 +35,7 @@ f_include $BSDCFG_SHARE/dialog.subr
 f_include $BSDCFG_SHARE/media/tcpip.subr
 f_include $BSDCFG_SHARE/networking/common.subr
 f_include $BSDCFG_SHARE/networking/ipaddr.subr
+f_include $BSDCFG_SHARE/strings.subr
 f_include $BSDCFG_SHARE/sysrc.subr
 
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="120.networking"
@@ -48,6 +49,8 @@ f_include_lang $BSDCFG_LIBE/$APP_DIR/inc
 #
 f_dialog_input_defaultrouter()
 {
+	local funcname=f_dialog_input_defaultrouter
+
 	#
 	# Get the defaultrouter. When this is not configured, the default is
 	# "NO", however we don't ever want to present this default to the user
@@ -61,9 +64,7 @@ f_dialog_input_defaultrouter()
 	local defaultrouter="$( f_sysrc_get 'defaultrouter:-NO' )"
 	local defaultrouter_orig="$defaultrouter" # for change-tracking
 	case "$defaultrouter" in
-	[Nn][Oo])
-		defaultrouter=$( f_route_get_default )
-		;;
+	[Nn][Oo]) f_route_get_default defaultrouter ;;
 	esac
 
 	#
@@ -72,8 +73,9 @@ f_dialog_input_defaultrouter()
 	# mounted, the system will hang.
 	#
 	if f_nfs_mounted && ! f_jailed; then
-		local setting="$( printf "$msg_current_default_router" \
-		                         "$defaultrouter" )"
+		local setting
+		f_sprintf setting "$msg_current_default_router" \
+		                  "$defaultrouter"
 		f_noyes "$msg_nfs_mounts_may_cause_hang" "$setting" ||
 			return $DIALOG_CANCEL
 	fi
@@ -101,27 +103,25 @@ f_dialog_input_defaultrouter()
 		f_dialog_info "$msg_saving_default_router"
 
 		# Save the default router/gateway
-		f_sysrc_set defaultrouter "$defaultrouter"
+		f_eval_catch $funcname f_sysrc_set \
+			'f_sysrc_set defaultrouter "%s"' "$defaultrouter"
 	fi
 
 	#
 	# Only ask to apply setting if the current defaultrouter is different
 	# than the stored configuration (in rc.conf(5)).
 	#
-	if [ "$( f_route_get_default )" != "$defaultrouter" ]; then
+	local dr
+	f_route_get_default dr
+	if [ "$dr" != "$defaultrouter" ]; then
 		f_dialog_clear
-		f_yesno "$msg_activate_default_router" \
-		        "$( f_route_get_default )" "$defaultrouter"
+		f_yesno "$msg_activate_default_router" "$dr" "$defaultrouter"
 		if [ $? -eq $DIALOG_OK ]; then
-			local err
-
 			# Apply the default router/gateway
-			f_quietly route delete default
-			err=$( route add default "$defaultrouter" 2>&1 )
-			if [ $? -ne $SUCCESS ]; then
-				f_dialog_msgbox "$err"
+			f_eval_catch -d $funcname route 'route delete default'
+			f_eval_catch $funcname route \
+				'route add default "%s"' "$defaultrouter" ||
 				return $DIALOG_CANCEL
-			fi
 		fi
 	fi
 }

Modified: head/usr.sbin/bsdconfig/networking/share/services.subr
==============================================================================
--- head/usr.sbin/bsdconfig/networking/share/services.subr	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/networking/share/services.subr	Sat Dec  7 00:31:01 2013	(r259054)
@@ -42,8 +42,9 @@ f_include $BSDCFG_SHARE/sysrc.subr
 #
 f_config_pcnfsd()
 {
+	local funcname=f_config_pcnfsd
 	f_package_add "pcnfsd" || return $?
-	f_sysrc_set mountd_flags "-n"
+	f_eval_catch $funcname f_sysrc_set 'f_sysrc_set mountd_flags -n'
 	return $SUCCESS
 }
 

Modified: head/usr.sbin/bsdconfig/packages/packages
==============================================================================
--- head/usr.sbin/bsdconfig/packages/packages	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/packages/packages	Sat Dec  7 00:31:01 2013	(r259054)
@@ -45,8 +45,8 @@ f_include $BSDCFG_SHARE/packages/package
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="030.packages"
 f_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
-[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
+f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm &&
+	pgm="${ipgm:-$pgm}"
 
 ############################################################ MAIN
 

Modified: head/usr.sbin/bsdconfig/password/password
==============================================================================
--- head/usr.sbin/bsdconfig/password/password	Sat Dec  7 00:05:45 2013	(r259053)
+++ head/usr.sbin/bsdconfig/password/password	Sat Dec  7 00:31:01 2013	(r259054)
@@ -37,8 +37,8 @@ f_include $BSDCFG_SHARE/password/passwor
 
 BSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="040.password"
 
-ipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list