git: c9be47b34dd8 - main - rc: add ${name}_setup script support

From: Mariusz Zaborski <oshogbo_at_FreeBSD.org>
Date: Mon, 15 Aug 2022 14:42:45 UTC
The branch main has been updated by oshogbo:

URL: https://cgit.FreeBSD.org/src/commit/?id=c9be47b34dd847da1d4ab0feee4a6100b2c5ea0d

commit c9be47b34dd847da1d4ab0feee4a6100b2c5ea0d
Author:     Franco Fichtner <franco@opnsense.org>
AuthorDate: 2022-08-15 14:41:31 +0000
Commit:     Mariusz Zaborski <oshogbo@FreeBSD.org>
CommitDate: 2022-08-15 14:43:12 +0000

    rc: add ${name}_setup script support
    
    Run a service-based setup script before running the start command.
    Useful for automatic configuration file generation.
    
    Reviewed by:    https://reviews.freebsd.org/D36006
---
 libexec/rc/rc.subr | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr
index 612ee12883ec..9ae93dc391a2 100644
--- a/libexec/rc/rc.subr
+++ b/libexec/rc/rc.subr
@@ -804,6 +804,8 @@ startmsg()
 #
 #	${name}_prepend	n	Command added before ${command}.
 #
+#	${name}_setup	n	Command executed before ${command}.
+#
 #	${name}_login_class n	Login class to use, else "daemon".
 #
 #	${name}_limits	n	limits(1) to apply to ${command}.
@@ -993,8 +995,8 @@ run_rc_command()
 	    _group=\$${name}_group	_groups=\$${name}_groups \
 	    _fib=\$${name}_fib		_env=\$${name}_env \
 	    _prepend=\$${name}_prepend	_login_class=\${${name}_login_class:-daemon} \
-	    _limits=\$${name}_limits    _oomprotect=\$${name}_oomprotect \
-	    _env_file=\$${name}_env_file
+	    _limits=\$${name}_limits	_oomprotect=\$${name}_oomprotect \
+	    _setup=\$${name}_setup	_env_file=\$${name}_env_file
 
 	if [ -n "$_env_file" ] && [ -r "${_env_file}" ]; then	# load env from file
 		set -a
@@ -1149,6 +1151,12 @@ $command $rc_flags $command_args"
 				fi
 			fi
 
+			if [ -n "$_setup" ]; then
+				if ! _run_rc_doit "$_setup"; then
+					warn "failed to setup ${name}"
+				fi
+			fi
+
 					# Prepend default limits
 			_doit="$_cd limits -C $_login_class $_limits $_doit"
 
@@ -2187,7 +2195,7 @@ check_kern_features()
 # check_namevarlist var
 #	Return "0" if ${name}_var is reserved in rc.subr.
 
-_rc_namevarlist="program chroot chdir env flags fib nice user group groups prepend"
+_rc_namevarlist="program chroot chdir env flags fib nice user group groups prepend setup"
 check_namevarlist()
 {
 	local _v