From b4ce4120f87d89476b2d6ab31df43900d2f5ce89 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Thu, 2 Oct 2014 21:07:55 +0800 Subject: [ERROR] Set exitstatus in onint Currently the exit status when we receive SIGINT is set in evalcommand which means that it doesn't always get set. For example, if you press CTRL-C at the prompt of an interactive dash, the exit status is not set to 130 as it is in many other Bourne shells. This patch fixes this by moving the setting of the exit status into onint which also simplifies evalcommand. Signed-off-by: Herbert Xu --- src/error.c | 1 + src/eval.c | 22 ++++++++-------------- 2 files changed, 9 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/error.c b/src/error.c index 9d31989..f9ea919 100644 --- a/src/error.c +++ b/src/error.c @@ -105,6 +105,7 @@ onint(void) { signal(SIGINT, SIG_DFL); raise(SIGINT); } + exitstatus = SIGINT + 128; exraise(EXINT); /* NOTREACHED */ } diff --git a/src/eval.c b/src/eval.c index 7f06931..0708bf5 100644 --- a/src/eval.c +++ b/src/eval.c @@ -853,21 +853,15 @@ bail: listsetvar(varlist.list, VEXPORT); } if (evalbltin(cmdentry.u.cmd, argc, argv, flags)) { - int status; - int i; - - i = exception; - if (i == EXEXIT) - goto raise; - - status = (i == EXINT) ? SIGINT + 128 : 2; - exitstatus = status; - - if (i == EXINT || spclbltin > 0) { -raise: - longjmp(handler->loc, 1); + if (exception == EXERROR) { + exitstatus = 2; + if (spclbltin <= 0) { + FORCEINTON; + break; + } } - FORCEINTON; +raise: + longjmp(handler->loc, 1); } break; -- cgit 1.4.1 tion>
path: root/txt (unfollow)
Commit message (Expand)Author
2019-01-15Add shell and unshell targetsJune McEnroe
2019-01-15Use \$ in cash PS1 and add # to RPS1June McEnroe
2019-01-15Use flock(2) when loading and saving historyJune McEnroe
2019-01-15Add sans8x16.psfJune McEnroe
2019-01-14Add guides to psfedJune McEnroe
2019-01-14Check for NULL copy or undo buffers in psfedJune McEnroe
2019-01-14Add cash.7 READMEJune McEnroe
2019-01-14Document old=new argument of fc -sJune McEnroe
2019-01-14Allow replacing empty string with fc old=newJune McEnroe
2019-01-13Enable warnings in libeditJune McEnroe
2019-01-13Show full path in RPS1June McEnroe
2019-01-13Shorten $HOME to ~ in prompt expansionJune McEnroe
2019-01-13Document PSlitJune McEnroe
2019-01-13Document PS0June McEnroe
2019-01-13Set PS0 in cashJune McEnroe
2019-01-13Add PS0June McEnroe
2019-01-13Change default ENV from cashrc to env.shJune McEnroe
2019-01-13Use colours in cash promptsJune McEnroe
2019-01-12Set PSlit like NetBSD shJune McEnroe
2019-01-12Install gnupg2 from pkgsrc and symlink gpgJune McEnroe
2019-01-12Reference cash builtin man pages in cash.1 SEE ALSOJune McEnroe
2019-01-12Restore cash builtin man page datesJune McEnroe
2019-01-12Use local libeditJune McEnroe
2019-01-12Replace libedit MakefileJune McEnroe
2019-01-11Import /usr/src/lib/libedit from NetBSD 8.0June McEnroe
2019-01-11Add PSlit for prompt escapesJune McEnroe
2019-01-11Don't make depend automaticallyJune McEnroe