Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Mar 2006 09:08:42 -0800
From:      Brooks Davis <brooks@one-eyed-alien.net>
To:        Florent Thoumie <flz@xbsd.org>
Cc:        freebsd-rc@freebsd.org
Subject:   Re: rc.subr / rc.d/sshd patch for review
Message-ID:  <20060328170842.GA16561@odin.ac.hmc.edu>
In-Reply-To: <1143556715.65237.4.camel@mayday.esat.net>
References:  <1143202549.16053.145.camel@mayday.esat.net> <20060324205627.GA18100@odin.ac.hmc.edu> <00E087F1-81E4-4580-A655-50F3DD8A471F@xbsd.org> <1143461191.4290.5.camel@mayday.esat.net> <20060327183745.GA19473@odin.ac.hmc.edu> <1143556715.65237.4.camel@mayday.esat.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--82I3+IH0IqGh5yIs
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Mar 28, 2006 at 03:38:35PM +0100, Florent Thoumie wrote:
> On Mon, 2006-03-27 at 10:37 -0800, Brooks Davis wrote:
> > On Mon, Mar 27, 2006 at 01:06:30PM +0100, Florent Thoumie wrote:
> > > On Sat, 2006-03-25 at 11:06 +0000, Florent Thoumie wrote:
> > > > On Mar 24, 2006, at 8:56 PM, Brooks Davis wrote:
> > > >=20
> > > > > On Fri, Mar 24, 2006 at 12:15:49PM +0000, Florent Thoumie wrote:
> > > > >> This is based on Oliver's patch for rc.d/sshd that can be found =
in
> > > > >> Gnats.
> > > > >>
> > > > >> In load_rc_config, I'm extracting prefix from ${command} (or
> > > > >> ${name}_program, which part is moved from run_rc_command), and =
=20
> > > > >> setting
> > > > >> etcdir accordingly.
> > > > >>
> > > > >> The point is that some scripts (like rc.d/sshd) can be used for =
base
> > > > >> sshd as well as ports sshd, and makes possible to source
> > > > >> ${prefix}/etc/rc.conf.d/${name}.
> > > > >>
> > > > >> This patch also documents ${name}_program above run_rc_command =
=20
> > > > >> (though
> > > > >> it's actually used in load_rc_config).
> > > > >
> > > > > Is command always set?  I'm pretty sure it isn't so this may not =
be =20
> > > > > entierly
> > > > > safe.  If it's not set, should we try to guess prefix from $0?
> > > >=20
> > > > Somehow, command gets set to the right value, but you're right, I'm=
 =20
> > > > missing a bit here.
> > >=20
> > > Hum, re-reading rc.subr, you were right, so I just did what you
> > > supposed.
> >=20
> > Thinking about this a bit more, in the guessing frmo $0 case, your prop=
osed
> > code:
> >=20
> > +		prefix=3D${0%/etc/rc.d/*}/
> >=20
> > won't work reliably when the user uses a relative path. I think somethi=
ng
> > like this would be better:
> >=20
> > 		_tmp=3D`/bin/realpath $0`
> > 		prefix=3D${_tmp%/etc/rc.d/*}/
>=20
> Indeed, fixed.
>=20
> > > > > The other issue I see is that instead of:
> > > > >
> > > > > 	if [ -f ${etcdir}/rc.conf.d/"$_command" ]; then
> > > > > 		debug "Sourcing ${etcdir}/rc.conf.d/${_command}"
> > > > > 		. ${etcdir}/rc.conf.d/"$_command"
> > > > > 	fi
> > > > >
> > > > > I think we should do:
> > > > >
> > > > > 	if [ -f /etc/rc.conf.d/"$_command" ]; then
> > > > > 		debug "Sourcing /etc/rc.conf.d/${_command}"
> > > > > 		. /etc/rc.conf.d/"$_command"
> > > > > 	fi
> > > > > 	if [ "${etcdir}" !=3D "/etc" -a -f ${etcdir}/=20
> > > > > rc.conf.d/"$_command" ]; then
> > > > > 		debug "Sourcing ${etcdir}/rc.conf.d/${_command}"
> > > > > 		. ${etcdir}/rc.conf.d/"$_command"
> > > > > 	fi
> > > > >
> > > > > That preserves the old behavior while adding support for
> > > > > ${prefix}/etc/rc.conf.d.
> > > >=20
> > > > Fair enough, but I'd like to add a note saying that /etc/rc.conf.d/=
$=20
> > > > {name} is deprecated for ${etcdir} !=3D "/etc".
> >=20
> > The deprecation warning should not be printed in the case that ${etcdir}
> > is /etc.  You should also avoid sourcing the file twice in the /etc
> > case.  The easiest way to do that is probably to make the first case
> > contingent on ${etcdir} !=3D /etc.
>=20
> Next time I'll test my changes (and sleep more).
>=20
> Did that too, and added a check to test if there's a
> ${etcdir}/rc.conf.d/${_command} file.

Testing prefix=3D/ isn't sufficent since prefix could also be /usr.  You
should check etcdir=3D/etc.

I don't think there's much point in the second test.  I don't like silent
ignoring of files, it's really hard to debug.  Instead, I'd source the file
in that case, but print a warning that two files exist.

> Patch updated : http://people.freebsd.org/~flz/local/rc.d-sshd.diff
>=20
> BTW, I think that we should s/_command/_name/ in load_rc_config(), this
> is a bit confusing.

That sounds reasonable.

-- Brooks

--=20
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4

--82I3+IH0IqGh5yIs
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQFEKW2ZXY6L6fI4GtQRAr3QAKDbNJOQexY58hnMcaToOhaoKr8x3ACg1gUT
abDIkLNY/5+If4Y3EoeLp1s=
=Nz23
-----END PGP SIGNATURE-----

--82I3+IH0IqGh5yIs--



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