Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Aug 2002 09:52:52 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        nbm@mithrandr.moria.org
Cc:        rizzo@icir.org, arch@FreeBSD.ORG
Subject:   Re: ugliness in rc.* scripts
Message-ID:  <20020821.095252.61131232.imp@bsdimp.com>
In-Reply-To: <20020821074819.GA58163@mithrandr.moria.org>
References:  <20020820232538.A53816@iguana.icir.org> <20020821074819.GA58163@mithrandr.moria.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20020821074819.GA58163@mithrandr.moria.org>
            Neil Blakey-Milner <nbm@mithrandr.moria.org> writes:
: On Tue 2002-08-20 (23:25), Luigi Rizzo wrote:
: > Hi,
: > in various rc.* scripts we have multiple instances of
: > constructs like this:
: > 
: > 	case ${some_config_variable} in
: > 	[Mm][Ii][Xx][Ed]_[Cc][Aa][Ss][Ee]_[Ss][Tt][Rr][Ii][Nn][Gg])
: > 		....
: > 
: > which is not the most desirable thing in terms of readability.
: > This would be easily fixed by moving /usr/bin/tr to /bin/tr (statically
: > linked) and doing
: > 
: > 	tolower() {
: > 	    echo `tr A-Z a-z <<_EOF
: > 	$*`
: > 	}
: > 
: > 	case `tolower ${some_config_variable}` in
: > 	mixed_case_string)
: > 		...
: > 
: > 
: > (btw, i am not sure why, in the above example the _EOF delimited
: > is not required nor i can find any place to put it without being
: > processed as stdin. Perhaps a bug in /bin/sh ?)
: > 
: > Anyways, should we go for this ? I believe our scripts would be
: > greatly improved.
: 
: I believe the argument for 'case' and those mixed case strings is that
: it doesn't spawn a process, whereas "if [ " did at the time.  Using
: 'echo' and 'tr' and two ``'s will spawn four shells (or something like
: that).

Why not just have

    case -i ${some_config_variable} in

to do the case folding.  This would be a backwards compatible extension:

     The syntax of the case command is
           case word in
           pattern) list ;;
           ...
           esac

where word is singular, not plural (like in the for loop syntax).

Warner

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020821.095252.61131232.imp>