aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-08-11 20:56:53 +1000
committermaximilian attems <max@stro.at>2010-03-22 00:29:17 +0100
commitfb696791c622fab6719e724d0d4239225bcbe706 (patch)
tree39001e270bd53a67321cc4974b996867d9b91a60
parentc9c9390fbea8cd7dfe15188632cc17b0a45b76fe (diff)
downloadklibc-fb696791c622fab6719e724d0d4239225bcbe706.tar.gz
[klibc] [EVAL] Revert SKIPEVAL into EXEXIT
Now that eval handles EV_TESTED correctly, we can remove the SKIPEVAL hack and simply use EXEXIT for set -e. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: maximilian attems <max@stro.at>
-rw-r--r--usr/dash/eval.c11
-rw-r--r--usr/dash/eval.h1
-rw-r--r--usr/dash/main.c9
3 files changed, 5 insertions, 16 deletions
diff --git a/usr/dash/eval.c b/usr/dash/eval.c
index b462b0fb5146a..876ea9b1a802b 100644
--- a/usr/dash/eval.c
+++ b/usr/dash/eval.c
@@ -309,15 +309,10 @@ setstatus:
break;
}
out:
- if ((checkexit & exitstatus))
- evalskip |= SKIPEVAL;
- else if (pendingsigs && dotrap())
- goto exexit;
-
- if (flags & EV_EXIT) {
-exexit:
+ if ((checkexit & exitstatus) ||
+ (pendingsigs && dotrap()) ||
+ (flags & EV_EXIT))
exraise(EXEXIT);
- }
}
diff --git a/usr/dash/eval.h b/usr/dash/eval.h
index 005620d1f14c8..e190b28ae4466 100644
--- a/usr/dash/eval.h
+++ b/usr/dash/eval.h
@@ -59,4 +59,3 @@ extern int evalskip;
#define SKIPCONT (1 << 1)
#define SKIPFUNC (1 << 2)
#define SKIPFILE (1 << 3)
-#define SKIPEVAL (1 << 4)
diff --git a/usr/dash/main.c b/usr/dash/main.c
index 7d07e2d00d84f..2bff9561a90b6 100644
--- a/usr/dash/main.c
+++ b/usr/dash/main.c
@@ -243,7 +243,7 @@ cmdloop(int top)
skip = evalskip;
if (skip) {
evalskip = 0;
- return skip & SKIPEVAL;
+ break;
}
}
@@ -259,17 +259,12 @@ cmdloop(int top)
STATIC void
read_profile(const char *name)
{
- int skip;
-
name = expandstr(name);
if (setinputfile(name, INPUT_PUSH_FILE | INPUT_NOFILE_OK) < 0)
return;
- skip = cmdloop(0);
+ cmdloop(0);
popfile();
-
- if (skip)
- exitshell();
}