From ab400c0be5577cab2a66d242183887ebbd61717f Mon Sep 17 00:00:00 2001 From: Nicholas Date: Wed, 17 Nov 2021 08:22:03 -0800 Subject: checkin --- src/cmd/rc/lex.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/cmd/rc/lex.c') diff --git a/src/cmd/rc/lex.c b/src/cmd/rc/lex.c index 9283404..f2c0a60 100644 --- a/src/cmd/rc/lex.c +++ b/src/cmd/rc/lex.c @@ -147,8 +147,11 @@ readc(void) if(runner->flag.eof) return EOF; - if(!prompt(&lexer.doprompt)) - exit(1); // XXX: hack for signal handling right now... + if(lexer.doprompt){ + if(!prompt()) + exit(1); // XXX: hack for signal handling right now... + lexer.doprompt = 0; + } c = get(runner->cmd.io); lexer.doprompt = lexer.doprompt || c=='\n' || c==EOF; @@ -290,7 +293,7 @@ readhere(void) yyerror("failed to make heredoc"); io = openfd(c); - prompt(&lexer.doprompt); + prompt(); beg=line, s=line, end=arrend(line)-1, len=PAGESIZE; while((c=get(runner->cmd.io))!=EOF){ @@ -318,7 +321,7 @@ readhere(void) printstr(io, beg); /* reset */ s = beg; - prompt(&lexer.doprompt); + prompt(); printchar(io, c); } @@ -351,6 +354,12 @@ isidentchar(int c) return c>' ' && !strchr("!\"#$%&'()+,-./:;<=>?@[\\]^`{|}~", c); } +void +initlexer(int f) +{ + lexer.doprompt=f; +} + int yylex(void) { -- cgit v1.2.1