From 84dd06463916fbf857351fbaba4ea33e1e056460 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Tue, 28 Aug 2012 20:38:53 -0400 Subject: [PATCH] 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. --- snippet/exported.sh.in | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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 -- 2.43.0