Author: dteske
Date: Wed Feb  3 00:51:38 2016
New Revision: 295180
URL: https://svnweb.freebsd.org/changeset/base/295180

Log:
  Define f_sprintf() dynamically at inclusion time
  
  No need to check/re-check capabilities that won't change at runtime.

Modified:
  head/usr.sbin/bsdconfig/share/strings.subr

Modified: head/usr.sbin/bsdconfig/share/strings.subr
==============================================================================
--- head/usr.sbin/bsdconfig/share/strings.subr  Wed Feb  3 00:34:23 2016        
(r295179)
+++ head/usr.sbin/bsdconfig/share/strings.subr  Wed Feb  3 00:51:38 2016        
(r295180)
@@ -154,20 +154,25 @@ f_substr()
 # Similar to sprintf(3), write a string into $var_to_set using printf(1) syntax
 # (`$format [$arguments ...]').
 #
-f_sprintf()
-{
-       local __var_to_set="$1"
-       shift 1 # var_to_set
-
-       case "$BASH_VERSION" in
-       3.1*|4.*)
-               local __tmp
+case "$BASH_VERSION" in
+3.1*|4.*)
+       f_sprintf()
+       {
+               local __var_to_set="$1" __tmp
+               shift 1 # var_to_set
                printf -v __tmp "$@"
                eval "$__var_to_set"=\"\${__tmp%\$NL}\"
-               ;;
-       *) eval "$__var_to_set"=\$\( printf -- \"\$@\" \)
-       esac
-}
+       }
+       ;;
+*)
+       # NB: On FreeBSD, sh(1) runs this faster than bash(1) runs the above
+       f_sprintf()
+       {
+               local __var_to_set="$1"
+               shift 1 # var_to_set
+               eval "$__var_to_set"=\$\( printf -- \"\$@\" \)
+       }
+esac
 
 # f_vsprintf $var_to_set $format $format_args
 #
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to