ash: add comment explaining "set -e; $(cmd)" discrepancy
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 25 Oct 2016 16:12:15 +0000 (18:12 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 25 Oct 2016 16:12:15 +0000 (18:12 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c

index cf48b7743e8f35051f3557683d3d5a47450978c3..79439bf3e401085d9bb54a65f0c6b19b87e8d506 100644 (file)
@@ -5924,6 +5924,14 @@ evalbackcmd(union node *n, struct backcmd *result)
                                copyfd(pip[1], 1 | COPYFD_EXACT);
                                close(pip[1]);
                        }
+/* TODO: eflag clearing makes the following not abort:
+ *  ash -c 'set -e; z=$(false;echo foo); echo $z'
+ * which is what bash does (unless it is in POSIX mode).
+ * dash deleted "eflag = 0" line in the commit
+ *  Date: Mon, 28 Jun 2010 17:11:58 +1000
+ *  [EVAL] Don't clear eflag in evalbackcmd
+ * For now, preserve bash-like behavior, it seems to be somewhat more useful:
+ */
                        eflag = 0;
                        evaltree(n, EV_EXIT); /* actually evaltreenr... */
                        /* NOTREACHED */