+2009-12-05 Stefano Lattarini <stefano.lattarini@gmail.com>
+ Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ Document Solaris/Heirloom sh set -e issue with command substitutions.
+ * doc/autoconf.texi (Limitations of Builtins): Fix typos `set -d'
+ in previous example. Document failure to honor && lists with set -e
+ and a command substitution in the failing command.
+ Report and initial patch by Stefano Lattarini against Automake.
+
2009-12-04 Eric Blake <ebb9@byu.net>
Warn if using unnamed diversion.
Solaris @command{/bin/sh} cannot be ignored, even with @samp{||}.
@example
-$ @kbd{/bin/sh -c 'set -d; foo=`false` || echo foo; echo bar'}
-$ @kbd{bash -c 'set -d; foo=`false` || echo foo; echo bar'}
+$ @kbd{/bin/sh -c 'set -e; foo=`false` || echo foo; echo bar'}
+$ @kbd{bash -c 'set -e; foo=`false` || echo foo; echo bar'}
foo
bar
@end example
+@noindent
+Moreover, a command substitution, successful or not, causes this shell to
+exit from a failing outer command even in presence of an @samp{&&} list:
+
+@example
+$ @kbd{bash -c 'set -e; false `true` && echo notreached; echo ok'}
+ok
+$ @kbd{sh -c 'set -e; false `true` && echo notreached; echo ok'}
+$
+@end example
+
Portable scripts should not use @samp{set -e} if @command{trap} is used
to install an exit handler. This is because Tru64/OSF 5.1 @command{sh}
sometimes enters the trap handler with the exit status of the command