Skip site navigation (1)Skip section navigation (2)
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>