summary refs log tree commit diff
path: root/src/main.c
diff options
context:
space:
mode:
authorherbert <herbert@gondor.apana.org.au>2005-02-25 21:15:30 +1100
committerHerbert Xu <herbert@gondor.apana.org.au>2005-09-26 18:33:03 +1000
commit253568ed6557621f24337b775e54a03c7b4300e1 (patch)
tree12c81e98684bfbe993c970b2b5e5615a39618b61 /src/main.c
parentChanged boolean rootshell into shlvl counter. (diff)
downloaddash-253568ed6557621f24337b775e54a03c7b4300e1.tar.gz
dash-253568ed6557621f24337b775e54a03c7b4300e1.zip
Catch set -e exits within built-in commands.
Diffstat (limited to '')
-rw-r--r--src/main.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 0d69e4f..4902cfa 100644
--- a/src/main.c
+++ b/src/main.c
@@ -138,13 +138,17 @@ main(int argc, char **argv)
 			status = 2;
 			break;
 
+		case EXEXIT:
+		case EXEVAL:
+			state = 0;
+			/* fall through */
 		default:
 			status = exitstatus;
 			break;
 		}
 		exitstatus = status;
 
-		if (e == EXEXIT || state == 0 || iflag == 0 || ! rootshell)
+		if (state == 0 || iflag == 0 || shlvl)
 			exitshell();
 
 		if (e == EXINT