Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Feb 2016 00:51:39 +0000 (UTC)
From:      Devin Teske <dteske@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r295180 - head/usr.sbin/bsdconfig/share
Message-ID:  <201602030051.u130pd3t033488@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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
 #



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201602030051.u130pd3t033488>