From: Nick Bowler Date: Wed, 29 Aug 2012 00:38:53 +0000 (-0400) Subject: exported.sh: Improve error handling. X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/commitdiff_plain/84dd06463916fbf857351fbaba4ea33e1e056460 exported.sh: Improve error handling. Use the eval trick to handle errors from commands in the pipeline other than the last. In particular, we now detect if nm failed and return an error status in this case. While we're rewriting this code, replace sort | uniq with sort -u as the latter should be fine according to POSIX. We can re-add the two-command version if it actually causes problems. --- diff --git a/snippet/exported.sh.in b/snippet/exported.sh.in index 762600a..ef875a5 100644 --- a/snippet/exported.sh.in +++ b/snippet/exported.sh.in @@ -1,6 +1,6 @@ #!@SHELL@ # -# Copyright © 2011 Nick Bowler +# Copyright © 2011-2012 Nick Bowler # # Determine the list of exported symbols from archives or (libtool) object # files. @@ -40,5 +40,19 @@ done set x $OBJS; shift case $# in 0) : ;; -*) @NM@ $OBJS | @GLOBAL_SYMBOL_PIPE@ | @SED@ 's/^.* //' | sort | uniq ;; +*) + exec 4>&1 + eval_cmd=`exec 3>&1 + { @NM@ $OBJS 3>&- + echo "(exit $?) || exit $?" >&3 + } | { @GLOBAL_SYMBOL_PIPE@ 3>&- + echo "(exit $?) || exit $?" >&3 + } | { @SED@ 's/^.* //' 3>&- + echo "(exit $?) || exit $?" >&3 + } | { sort -u 3>&- + echo "(exit $?) || exit $?" >&3 + } >&4` + exec 4>&- + eval "$eval_cmd" +;; esac