hush: add TODO for "set -e"
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 10 Jul 2017 08:33:10 +0000 (10:33 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 10 Jul 2017 08:33:27 +0000 (10:33 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/hush.c

index 8223cdbc5ac892f5fd5a86ec26094161cd0e104f..89cd47d8fbfe9f462caa21305ab5dd5849ae0525 100644 (file)
@@ -49,6 +49,7 @@
  *          [un]alias, command, fc, getopts, newgrp, readonly, times
  *      make complex ${var%...} constructs support optional
  *      make here documents optional
+ *      set -e (some ash testsuite entries use it, want to adopt those)
  *
  * Bash compat TODO:
  *      redirection of stdout+stderr: &> and >&
@@ -8421,6 +8422,22 @@ static int set_mode(int state, char mode, const char *o_opt)
                        G.o_opt[idx] = state;
                        break;
                }
+/* TODO: set -e
+Exit if pipe, list, or compound command exits with a non-zero status.
+Shell does not exit if failed command is part of condition in
+if/while, part of && or || list except the last command, any command
+in a pipe but the last, or if the command's return value is being
+inverted with !. If a compound command other than a subshell returns a
+non-zero status because a command failed while -e was being ignored, the
+shell does not exit. A trap on ERR, if set, is executed before the shell
+exits [ERR is a bashism].
+
+If a compound command or function executes in a context where -e is
+ignored, none of the commands executed within are affected by the -e
+setting. If a compound command or function sets -e while executing in a
+context where -e is ignored, that setting does not have any effect until
+the compound command or the command containing the function call completes.
+*/
        default:
                return EXIT_FAILURE;
        }