From 003ec8c7e8814221b366e95dc4ea24fa4cf1e99c Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 9 Jul 2001 16:05:13 +0000 Subject: 15327: always use local LINENOs in parse_string(). --- ChangeLog | 8 ++++++++ Src/Modules/parameter.c | 2 +- Src/Modules/zpty.c | 2 +- Src/Modules/zutil.c | 2 +- Src/builtin.c | 4 ++-- Src/exec.c | 14 +++++++------- Src/glob.c | 2 +- Src/parse.c | 2 +- 8 files changed, 22 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 90cf1d0cb..d146f6abc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2001-07-09 Peter Stephenson + + * 15327: Src/builtin.c, Src/exec.c, Src/glob.c, Src/parse.c, + Src/Modules/parameter.c, Src/Modules/zpty.c, Src/Modules/zutil.c: + Always use local LINENOs in parse_string(). Currently we only + do this sometimes in order for existing $LINENO to show through. + This seems to cause more problems than it solves. + 2001-07-07 Bart Schaefer * 15308: Src/builtin.c: Fix infinite loop on `r OLD=NEW' when OLD diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c index db3534e69..fe44eafb3 100644 --- a/Src/Modules/parameter.c +++ b/Src/Modules/parameter.c @@ -342,7 +342,7 @@ setfunction(char *name, char *val, int dis) val = metafy(val, strlen(val), META_REALLOC); - prog = parse_string(val, 1); + prog = parse_string(val); if (!prog || prog == &dummy_eprog) { zwarn("invalid function definition", value, 0); diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c index 80deba786..7ab31cfb4 100644 --- a/Src/Modules/zpty.c +++ b/Src/Modules/zpty.c @@ -276,7 +276,7 @@ newptycmd(char *nam, char *pname, char **args, int echo, int nblock) int master, slave, pid; Eprog prog; - prog = parse_string(zjoin(args, ' ', 1), 0); + prog = parse_string(zjoin(args, ' ', 1)); if (!prog) { errflag = 0; return 1; diff --git a/Src/Modules/zutil.c b/Src/Modules/zutil.c index 8a69a561b..85ab4b394 100644 --- a/Src/Modules/zutil.c +++ b/Src/Modules/zutil.c @@ -115,7 +115,7 @@ setstypat(Style s, char *pat, Patprog prog, char **vals, int eval) if (eval) { int ef = errflag; - eprog = parse_string(zjoin(vals, ' ', 1), 0); + eprog = parse_string(zjoin(vals, ' ', 1)); errflag = ef; if (!eprog) diff --git a/Src/builtin.c b/Src/builtin.c index 11324a0cd..9a792e15c 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -3421,7 +3421,7 @@ bin_eval(char *nam, char **argv, char *ops, int func) { Eprog prog; - prog = parse_string(zjoin(argv, ' ', 1), 0); + prog = parse_string(zjoin(argv, ' ', 1)); if (!prog) { errflag = 0; return 1; @@ -4027,7 +4027,7 @@ bin_trap(char *name, char **argv, char *ops, int func) arg = *argv++; if (!*arg) prog = &dummy_eprog; - else if (!(prog = parse_string(arg, 0))) { + else if (!(prog = parse_string(arg))) { zwarnnam(name, "couldn't parse trap command", NULL, 0); return 1; } diff --git a/Src/exec.c b/Src/exec.c index 91ce74e57..c3da81b5d 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -147,15 +147,15 @@ static int (*execfuncs[]) _((Estate, int)) = { /**/ mod_export Eprog -parse_string(char *s, int ln) +parse_string(char *s) { Eprog p; int oldlineno = lineno; lexsave(); - inpush(s, (ln ? INP_LINENO : 0), NULL); + inpush(s, INP_LINENO, NULL); strinbeg(0); - lineno = ln ? 1 : -1; + lineno = 1; p = parse_list(); lineno = oldlineno; strinend(); @@ -711,7 +711,7 @@ execstring(char *s, int dont_change_job, int exiting) Eprog prog; pushheap(); - if ((prog = parse_string(s, 0))) + if ((prog = parse_string(s))) execode(prog, dont_change_job, exiting); popheap(); } @@ -2669,7 +2669,7 @@ getoutput(char *cmd, int qt) pid_t pid; Wordcode pc; - if (!(prog = parse_string(cmd, 0))) + if (!(prog = parse_string(cmd))) return NULL; pc = prog->prog; @@ -2800,7 +2800,7 @@ parsecmd(char *cmd) return NULL; } *str = '\0'; - if (str[1] || !(prog = parse_string(cmd + 2, 0))) { + if (str[1] || !(prog = parse_string(cmd + 2))) { zerr("parse error in process substitution", NULL, 0); return NULL; } @@ -3496,7 +3496,7 @@ getfpfunc(char *s, int *ksh) d = metafy(d, len, META_REALLOC); scriptname = dupstring(s); - r = parse_string(d, 1); + r = parse_string(d); scriptname = oldscriptname; zfree(d, len + 1); diff --git a/Src/glob.c b/Src/glob.c index 2f64434c4..1f6bde3ab 100644 --- a/Src/glob.c +++ b/Src/glob.c @@ -2632,7 +2632,7 @@ qualsheval(char *name, struct stat *buf, off_t days, char *str) { Eprog prog; - if ((prog = parse_string(str, 0))) { + if ((prog = parse_string(str))) { int ef = errflag, lv = lastval, ret; unsetparam("reply"); diff --git a/Src/parse.c b/Src/parse.c index f16dcfd05..70a00031c 100644 --- a/Src/parse.c +++ b/Src/parse.c @@ -2602,7 +2602,7 @@ build_dump(char *nam, char *dump, char **files, int ali, int map, int flags) close(fd); file = metafy(file, flen, META_REALLOC); - if (!(prog = parse_string(file, 1)) || errflag) { + if (!(prog = parse_string(file)) || errflag) { errflag = 0; close(dfd); zfree(file, flen); -- cgit 1.4.1