cvs commit: src/etc rc.subr

Doug Barton dougb at FreeBSD.org
Wed Jul 26 19:00:02 UTC 2006


Yar Tikhiy wrote:
> On Tue, Jul 25, 2006 at 10:27:49PM -0700, Doug Barton wrote:
>> Yar Tikhiy wrote:
>>> yar         2006-07-25 17:20:22 UTC
>>>
>>>   FreeBSD src repository
>>>
>>>   Modified files:
>>>     etc                  rc.subr 
>>>   Log:
>>>   Avoid extra runs of test(1) by using its built-in logical operations.
>>>   
>>>   Revision  Changes    Path
>>>   1.63      +9 -15     src/etc/rc.subr
>>>
>>> http://www.FreeBSD.org/cgi/cvsweb.cgi/src/etc/rc.subr.diff?&r1=1.62&r2=1.63&f=h
>> I'm pretty sure that this commit has the opposite effect from what you
>> intended. If you do:
>>
>> [ foo -a bar ]
>>
>> then the bar test will always be run, whereas if you do
>>
>> [ foo ] && [ bar ]
>>
>> bar won't run unless foo succeeds.
> 
> I believed test(1) was smarter than that.  But as a matter of fact,
> -a won't skip bar even if foo is false, neither will -o if foo is
> true.  Is this a bug or a required feature?

If it makes you feel any better, I thought the same way you did, and learned
my lessons the hard way. :)

>> Also, you should be aware that in our /bin/sh test is a builtin, so what
>> you're trying to optimize for is not actually an issue to start with.
> 
> I admit that I was under the opposite impression that test(1) is
> external to our sh(1).  Perhaps our sh(1) manpage didn't state that
> clearly enough.  (Just clarified it.) 

Your change looks good, thanks for doing that.

> Anyway, I should have looked at builtin(1), it said the truth.

Well, no reason to really. Improving sh.1 is the right way to go here.

>> Unless you can show that this commit actually does improve performance, I'd
>> appreciate it if you'd reverse it.
> 
> No objection!  Fetched my back-out tool and gone applying it...

Much appreciated. :)

Doug

-- 

    This .signature sanitized for your protection



More information about the cvs-src mailing list