Date: Tue, 03 Jun 2008 10:03:40 -0700 From: Doug Barton <dougb@FreeBSD.org> To: Paul Schmehl <pschmehl_lists_nada@tx.rr.com> Cc: Robert Watson <rwatson@FreeBSD.org>, freebsd-ports@freebsd.org Subject: Re: Problems with startup scripts Message-ID: <4845796C.1080505@FreeBSD.org> In-Reply-To: <AC214063DE823AC114D553C8@utd65257.utdallas.edu> References: <765B879956FB90DA571FA609@Macintosh.local> <20080603131937.192622ee@gumby.homeunix.com.> <AC214063DE823AC114D553C8@utd65257.utdallas.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
Paul Schmehl wrote: > --On Tuesday, June 03, 2008 13:19:37 +0100 RW > <fbsd06@mlists.homeunix.com> wrote: > >> On Mon, 02 Jun 2008 22:13:15 -0500 >> Paul Schmehl <pschmehl_lists@tx.rr.com> wrote: >> >> >>> Imagine my surprise when I discovered that *all* of my startup >>> scripts=20 were running double flags! >>> >>> So, I looked at /etc/rc.subr, and lo and behold: >>> Line 670 of /etc/rc.subr has "$command $rc_flags $command_args" >>> >>> So, the question is, is this an error in rc_subr? No, it's always been that way, and it's actually fairly well documented. >> There are a number of /etc/rc.d scripts that follow similar usage, but >> they are mostly using flag variable names that don't match >> "${name}_flags". The exception is auditd which presumably would >> get double flags, if it were actually given any. That usage in auditd appears to be an error. >> $ grep -Ei "command_args.*=.*flags" /etc/rc.d/* >> /etc/rc.d/auditd:command_args="${auditd_flags}" >> /etc/rc.d/nfsd:command_args="${nfs_server_flags}" >> /etc/rc.d/ypbind:command_args="${nis_client_flags}" >> /etc/rc.d/yppasswdd:command_args="${nis_yppasswdd_flags}" >> /etc/rc.d/ypserv:command_args="${nis_server_flags}" >> /etc/rc.d/ypset:command_args="${nis_ypset_flags}" >> /etc/rc.d/ypxfrd:command_args="${nis_ypxfrd_flags}" > > I'm willing to bet that if you run some of these scripts through sh -x > (auditd, for example) you will find that they use double flags, just > like mine do. That would be true for auditd, but not for the others, for the reason described above. > Since rc.subr will append the flags to the commandline, adding them to > command_args is superfluous. If you set flags defaults in the script > such that /etc/rc.conf settings will override them, there's no need to > add flags to the commandline. Rc.subr does it for you. That's right. I try to catch these when scripts are committed or modified, but I can't review them all. Glad to hear that you got the right education though, and hopefully this being on the ports list will help someone else too. Doug -- This .signature sanitized for your protection
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4845796C.1080505>