Junio, *, good day. Sat, Sep 22, 2007 at 01:32:38AM -0700, Junio C Hamano wrote: > > OK, you're right. Especially if /bin/sh from Solaris and OpenBSD > > are working and they are not Bash. But I would not tell that > > the shell is broken now -- I had not seen the POSIX specification. > > Does it specifies how the shell should work in this case? > > I have always been assuming it to be the case (this construct is > not my invention but is an old school idiom I just inherited > from my mentor) and never looked at the spec recently, but I > re-read it just to make sure. The answer is yes. > > Visit http://www.opengroup.org/onlinepubs/000095399/ and follow > "Shell and Utilities volume (XCU)" and then "Case conditional > construct". Yes, thanks for the pointer. > So, as David suggests, if > > false > case Ultra in > Super) false ;; > Hyper) true ;; > esac && echo case returned ok > > does not say "case returned ok", then the shell has a bit of > problem. Correct: the current /bin/sh for FreeBSD does not set zero exit code if no case patterns were matched. So, I apologize for my quick decision on the non-brokenness of the /bin/sh -- it is broken. I had fixed the shell and filed the problem report. May be the change will be incorporated into the future release of FreeBSD. Meanwhile, I had added workarounds to the other places Junio mentioned in his follow-up and will try to push this patch to the FreeBSD port of Git. The explanation had been changed too ;)) Thanks to all people who helped me to realize what is wrong and where! -- Eygene - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html