Hi folks.

I would like to move away from the rc_exec variable to an rcexec() function for
rc.d scripts.
That will allow daemon_logger to work out of the box even for manually
crafted rc_start() functions.
I will also simplify the addition of new features like daemon_startdir.

I have tested this with a few daemons only.
So I am calling for testing this diff on your own setup to detect any possible
regression (especially for daemons with a complex starting sequence).
To test, just apply the diff to rc.subr and replace ${rcexec} with rc_exec in
your rc.d scripts.

As I don't want to spam the list, please report OK tests directly to me and
KO ones to the list.

Thanks a lot!


Index: rc.subr
===================================================================
RCS file: /cvs/src/etc/rc.d/rc.subr,v
retrieving revision 1.152
diff -u -p -r1.152 rc.subr
--- rc.subr     10 Feb 2022 16:57:33 -0000      1.152
+++ rc.subr     17 May 2022 07:05:57 -0000
@@ -159,11 +159,19 @@ _rc_wait_for_start() {
        return
 }
 
-rc_start() {
-       ${rcexec} "${daemon_logger:+set -o pipefail; }${daemon} 
${daemon_flags}${daemon_logger:+ 2>&1 |
+rc_exec() {
+       local _rcexec="su -fl -c ${daemon_class} -s /bin/sh ${daemon_user} -c"
+       [ "${daemon_rtable}" -eq "$(id -R)" ] ||
+               _rcexec="route -T ${daemon_rtable} exec ${_rcexec}"
+
+       ${_rcexec} "${daemon_logger:+set -o pipefail; }$@${daemon_logger:+ 2>&1 
|
                logger -ip ${daemon_logger} -t ${_name}}"
 }
 
+rc_start() {
+       rc_exec "${daemon} ${daemon_flags}"
+}
+
 rc_check() {
        pgrep -T "${daemon_rtable}" -q -xf "${pexp}"
 }
@@ -343,6 +351,3 @@ unset _rcflags _rclogger _rcrtable _rcti
 # the shell will strip the quotes from daemon_flags when starting a daemon;
 # make sure pexp matches the process (i.e. doesn't include the quotes)
 pexp="$(eval echo ${daemon}${daemon_flags:+ ${daemon_flags}})"
-rcexec="su -fl -c ${daemon_class} -s /bin/sh ${daemon_user} -c"
-[ "${daemon_rtable}" -eq "$(id -R)" ] ||
-       rcexec="route -T ${daemon_rtable} exec ${rcexec}"


-- 
Antoine

Reply via email to