aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/rc/lex.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/rc/lex.c')
-rw-r--r--src/cmd/rc/lex.c17
1 files changed, 13 insertions, 4 deletions
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)
{