Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Jun 2006 12:56:08 +0100
From:      Florent Thoumie <flz@FreeBSD.org>
To:        Yar Tikhiy <yar@comp.chem.msu.su>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/etc rc.subr src/share/man/man8 rc.subr.8
Message-ID:  <1150890968.3467.39.camel@mayday.esat.net>
In-Reply-To: <20060621113901.GG45947@comp.chem.msu.su>
References:  <200606210942.k5L9gtAi060504@repoman.freebsd.org> <1150883785.3467.4.camel@mayday.esat.net> <20060621105253.GE45947@comp.chem.msu.su> <1150887909.3467.18.camel@mayday.esat.net> <20060621113901.GG45947@comp.chem.msu.su>

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

--=-sDxB763PUYMVFRprHiJA
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Wed, 2006-06-21 at 15:39 +0400, Yar Tikhiy wrote:
> On Wed, Jun 21, 2006 at 12:05:09PM +0100, Florent Thoumie wrote:
> > On Wed, 2006-06-21 at 14:52 +0400, Yar Tikhiy wrote:
> > > On Wed, Jun 21, 2006 at 10:56:25AM +0100, Florent Thoumie wrote:
> > > > On Wed, 2006-06-21 at 09:42 +0000, Yar Tikhiy wrote:
> > > > > yar         2006-06-21 09:42:55 UTC
> > > > >=20
> > > > >   FreeBSD src repository
> > > > >=20
> > > > >   Modified files:
> > > > >     etc                  rc.subr=20
> > > > >     share/man/man8       rc.subr.8=20
> > > > >   Log:
> > > > >   Quite a number of rc.d scripts try to load kernel modules.  Man=
y
> > > > >   of them do that conditionally depending on kldstat.  The code i=
s
> > > > >   duplicated all over, but bugs can be uniqie.
> > > > >  =20
> > > > >   To make the things more consistent, introduce a new rc.subr fun=
ction,
> > > > >   load_kld, which takes care of loading a kernel module condition=
ally.
> > > > >  =20
> > > > >   (Found this lying for a while in my p4 branch for various hacks=
.)
> > > >=20
> > > > I added such a function some weeks ago (far more simple though). Ta=
lking
> > > > with pjd, I've backed it out to use the somewhat straight-forward m=
ethod
> > > > he used in rc.d/geli.
> > >=20
> > > rc.d/geli doesn't use kldload directlty, so it certainly won't
> > > benefit from the function I introduced.
> >=20
> > Then I'm not sure what script would benefit from this function. Can you
> > point me to an example?
>=20
> abi
> archdep
> atm1
> hcsecd
> ipfilter
> mdconfig
> mdconfig2
> pf
> pflog
> pfsync
> sdpd
> syscons
>=20
> They all do kldstat then kldload.  Some of them do grep or egrep
> on kldstat output.  Some of them don't forget to check status from
> kldload and emit a error message on failure.  Besides, there are
> scripts that forget to do kldstat in the first place, they just do
> kldload.  Now all this ado can become just a call to my function.

Removing all scripts using 'kldstat -q -m foo', we have:

$ grep kldstat * | grep -v -- "-q -m" | cut -d':' -f1 | sort -u
abi
archdep
atm1
ipfilter
syscons

archdep, atm1 and ipfilter could use this 'kldstat -q -m foo' method, so
that's only two candidates. Most scripts calling kldload without kldstat
first could use this method as well.

But ok, those are definitely scripts I do not read very often.

> > > > I don't have a particular feeling against your function but it uses
> > > > commands that may not be available early enough (getopt, egrep). Wh=
ile
> > > > it's easy to remove the getopt dependency (see rc.d/mdconfig), it's=
 not
> > > > the case for egrep.
> > >=20
> > > It's POSIX getopts, which ought to be a shell built-it by its design.
> > > egrep is used with -e only, one can avoid using it if egrep isn't
> > > available yet.  The only issue is true and false, I was sure they
> > > were in /bin, but it can be fixed easily.
>=20
> As I've just found, we have true and false as undocumented sh(1)
> builtins from the beginning of times.  So using true and false is
> no issue in rc.subr either.
>=20
> > Still, with /bin/sh, getopt isn't a builtin:
> >=20
> > $ sh -c 'which getopt'
> > /usr/bin/getopt
>=20
> You still mistake my words.  It's getopts, not getopt.  See sh(1).

Yes, indeed, missed the 's'.

> > You won't gain anything using grep instead of egrep since they're both
> > in /usr/bin.
>=20
> Have I ever tried to?

I guessed that's what you meant saying "grep is used with -e only, one
can avoid using it if egrep isn't available yet." What are you planning
to do then?

--=20
Florent Thoumie
flz@FreeBSD.org
FreeBSD Committer

--=-sDxB763PUYMVFRprHiJA
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (FreeBSD)

iD8DBQBEmTPYMxEkbVFH3PQRAlhWAJ93QkgIgVE8COx/Ssmnqpgf/q/LHQCfRydw
S9k2SjYrHJ5BSC/ZKBO94Pc=
=UBmg
-----END PGP SIGNATURE-----

--=-sDxB763PUYMVFRprHiJA--




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