On Tue, May 17, 2022 at 09:12:08AM +0200, Antoine Jacoutot wrote: > 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!
FYI I intend to commit this over the week-end. Best way to get test reports I guess. > 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 > -- Antoine