diff options
author | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2014-12-07 16:24:19 +0000 |
---|---|---|
committer | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2014-12-07 16:24:19 +0000 |
commit | ab09c24a49951bfafb0ebd075fdd3e99e064f5aa (patch) | |
tree | 861f2bd493fd5bd50a08756a34585d6b7c151e8f /Src/Modules | |
parent | 908abba89147f8a4e4991c4464a95ee90d1078f6 (diff) | |
download | zsh-ab09c24a49951bfafb0ebd075fdd3e99e064f5aa.tar.gz zsh-ab09c24a49951bfafb0ebd075fdd3e99e064f5aa.tar.xz zsh-ab09c24a49951bfafb0ebd075fdd3e99e064f5aa.zip |
First go at separating errors and keyboard interrupts
This is the first posting exactly as was, with known errors and omissions. Basic strategy is to introduce bits to errflag and to set and reset them separately.
Diffstat (limited to 'Src/Modules')
-rw-r--r-- | Src/Modules/zpty.c | 2 | ||||
-rw-r--r-- | Src/Modules/zutil.c | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c index 63c79a731..7b6130c6f 100644 --- a/Src/Modules/zpty.c +++ b/Src/Modules/zpty.c @@ -308,7 +308,7 @@ newptycmd(char *nam, char *pname, char **args, int echo, int nblock) prog = parse_string(zjoin(args, ' ', 1), 0); if (!prog) { - errflag = 0; + errflag &= ~ERRFLAG_ERROR; scriptname = oscriptname; ineval = oineval; return 1; diff --git a/Src/Modules/zutil.c b/Src/Modules/zutil.c index 1cca0c4b8..c89495070 100644 --- a/Src/Modules/zutil.c +++ b/Src/Modules/zutil.c @@ -301,7 +301,8 @@ setstypat(Style s, char *pat, Patprog prog, char **vals, int eval) int ef = errflag; eprog = parse_string(zjoin(vals, ' ', 1), 0); - errflag = ef; + /* Keep any user interrupt error status */ + errflag = ef | (errflag & ERRFLAG_INT); if (!eprog) { @@ -394,10 +395,11 @@ evalstyle(Stypat p) unsetparam("reply"); execode(p->eval, 1, 0, "style"); if (errflag) { - errflag = ef; + /* Keep any user interrupt error status */ + errflag = ef | (errflag & ERRFLAG_INT); return NULL; } - errflag = ef; + errflag = ef | (errflag & ERRFLAG_INT); queue_signals(); if ((ret = getaparam("reply"))) |