From owner-freebsd-hackers@FreeBSD.ORG Mon Aug 1 18:10:15 2005 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1899516A41F; Mon, 1 Aug 2005 18:10:15 +0000 (GMT) (envelope-from mux@freebsd.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.FreeBSD.org (Postfix) with ESMTP id D8B1143D45; Mon, 1 Aug 2005 18:10:14 +0000 (GMT) (envelope-from mux@freebsd.org) Received: by elvis.mu.org (Postfix, from userid 1920) id CE56F5C793; Mon, 1 Aug 2005 11:10:14 -0700 (PDT) Date: Mon, 1 Aug 2005 20:10:14 +0200 From: Maxime Henrion To: Giorgos Keramidas Message-ID: <20050801181014.GA14567@elvis.mu.org> References: <64511.68.95.232.238.1122917387.squirrel@68.95.232.238> <200508011355.19274.jhb@FreeBSD.org> <20050801180254.GB1176@beatrix.daedalusnetworks.priv> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050801180254.GB1176@beatrix.daedalusnetworks.priv> User-Agent: Mutt/1.4.2.1i Cc: freebsd-hackers@freebsd.org Subject: Re: [patch] rc.d cleanup X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Aug 2005 18:10:15 -0000 Giorgos Keramidas wrote: > On 2005-08-01 13:55, John Baldwin wrote: > >On Monday 01 August 2005 01:29 pm, diz@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