From: Josh Triplett Date: Fri, 06 Jul 2007 03:22:24 GMT Subject: Re: [PATCH 2/2] filter-branch: fail gracefully when a filter fails Message-ID: <468DB570.1090900@freedesktop.org> In-Reply-To: <20070705135824.GB5493@sigill.intra.peff.net> Jeff King wrote: > On Wed, Jul 04, 2007 at 03:36:01PM +0100, Johannes Schindelin wrote: > >> It is slightly ugly that the output of msg-filter is written >> to a temporary file. But I do not know a better method to >> catch a failing msg-filter. Help? > > If you mean, in general, to catch the exit code of the first part of a > pipe, you have to do something like this: > > status=`((cmd1; echo $? >&3) | cmd2) 3>&1` > > which is pretty ugly in itself, and if you want the stdout of cmd2, then > you have to add even more redirection. I'm not sure it's worth it. bash has "set -o pipefail", but that would require bash. However, you could try setting pipefail, and ignoring any failure to set it; that would give the more friendly behavior with bash, while still allowing any /bin/sh in general. - Josh Triplett