Re: [PATCH] Supplant the "while case ... break ;; esac" idiom
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 23, 2007, 22:20 UTC
- Message-ID
- <7vhcllc9bz.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <85myvdktb3.fsf@lola.goethe.zz>
David Kastrup <dak@gnu.org> writes:
Show 22 quoted lines
> A lot of shell scripts contained stuff starting with > > while case "$#" in 0) break ;; esac > > and similar. I consider breaking out of the condition instead of the > body od the loop ugly, and the implied "true" value of the > non-matching case is not really obvious to humans at first glance. It > happens not to be obvious to some BSD shells, either, but that's > because they are not POSIX-compliant. In most cases, this has been > replaced by a straight condition using "test". "case" has the > advantage of being faster than "test" on vintage shells where "test" > is not a builtin. Since none of them is likely to run the git > scripts, anyway, the added readability should be worth the change. > > A few loops have had their termination condition expressed > differently. > > Signed-off-by: David Kastrup <dak@gnu.org> > --- > > Ok, this is not really what we have been talking about except in one > case, but I think it is actually more of an improvement.
Gaah, didn't I say I do NOT think it is an improvement?
> I consider breaking out of the condition instead of the > body od the loop ugly,
Well, as we all know that we disagree on this point, stating what you consider one-sidedly here is quite inappropriate.
> and the implied "true" value of the > non-matching case is not really obvious to humans at first > glance.
It is more like "if you do not know shell".
In other words, I am somewhat disgusted with the first part of your proposed commit log message, although I like what the patch does ;-).
Show 5 quoted lines
> -while case "$#" in 0) break ;; esac > +while test "$#" != 0 > do > case "$1" in > -a)
And let's not quote "$#".