ash: eval: Check nflag in evaltree instead of cmdloop

Upstream commit:

    Date: Thu, 4 Jun 2020 21:53:55 +1000
    eval: Check nflag in evaltree instead of cmdloop

    This patch moves the nflag check from cmdloop into evaltree.  This
    is so that nflag will be in force even if we enter the shell via a
    path other than cmdloop, e.g., through sh -c.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-09-07 01:52:21 +02:00
parent e0bf3df020
commit 41beb53787
3 changed files with 9 additions and 1 deletions

View File

@ -9299,6 +9299,9 @@ evaltree(union node *n, int flags)
setstackmark(&smark);
if (nflag)
goto out;
if (n == NULL) {
TRACE(("evaltree(NULL) called\n"));
goto out;
@ -13557,7 +13560,7 @@ cmdloop(int top)
out2str("\nUse \"exit\" to leave shell.\n");
}
numeof++;
} else if (nflag == 0) {
} else {
int i;
/* job_warning can only be 2,1,0. Here 2->1, 1/0->0 */

View File

@ -0,0 +1,3 @@
set -n stops in -c?
YES
Ok:0

View File

@ -0,0 +1,2 @@
$THIS_SH -c "echo 'set -n stops in -c?'; set -n; echo NO" && echo YES
echo Ok:$?