[patch] rc.d cleanup

Maxime Henrion mux at FreeBSD.org
Mon Aug 1 18:10:15 GMT 2005


Giorgos Keramidas wrote:
> On 2005-08-01 13:55, John Baldwin <jhb at freebsd.org> wrote:
> >On Monday 01 August 2005 01:29 pm, diz at linuxpowered.com wrote:
> >> This patch effects most of the rc.d scripts that utilize simple IF
> >> statements, converting them to logical AND/OR's instead. For example:
> >>
> >> if [ ! -f foo ]
> >> then
> >>     bar
> >> fi
> >>
> >> Would simply become:
> >>
> >> [ -f foo ] || bar
> >>
> >> The exception (but not the rule) is for any situation where ELIF/ELSE is
> >> required. In other words any exclusive conditional situations.
> >>
> >> I also applied this notion to many simple blocks of code wrapped around
> >> non-exclusive IF statements, such as:
> >>
> >> [ -f foo ] && {
> >>    command-list
> >>    [...]
> >> }
> >
> > The argument I would have against this is that it is a lot easier to
> > read the 'if foo; then ; fi' style, esp. for folks used to using C,
> > etc.  Shell scripts don't need to be overly obfuscated.
> 
> Ditto.  The if/then blocks may look superficial at first and entirely
> redundant, but they really work much better then code like this:
> 
> 	[ -f foo ] || bar
> 
> has to be extended to form a multiline statement.  Now, I know that one
> can always write:
> 
> 	[ -f foo ] || {
> 		[ -d bar ] && {
> 			blah
> 		}
> 	}
> 
> But this quickly gets too ugly for my taste.  The equivalent if/then
> blocks:
> 
> 	if [ ! -f foo ]; then
> 		if [ -d bar ]; then
> 			blah
> 		fi
> 	fi
> 
> or even, the similar:
> 
> 	if [ ! -f foo ] && [ -d bar ]; then
> 		blah
> 	fi
> 
> Look much much prettier to the eyes of one who knows how to read both
> shell scripts and C code.

Thirded.  I far prefer the bigger C-like if statements and think this
patch is a huge code churn for what is basically code obfuscation.

Cheers,
Maxime


More information about the freebsd-hackers mailing list