From e34a4791b72e426b02f33496fe03be1ad81819a6 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Tue, 26 Oct 2021 14:11:25 -0700 Subject: fix(rc): prompt during command entry --- sys/cmd/rc/exec.c | 2 ++ sys/cmd/rc/prompt.c | 11 +++++++---- sys/cmd/rc/rc.h | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'sys/cmd') diff --git a/sys/cmd/rc/exec.c b/sys/cmd/rc/exec.c index 5f3c6d6..1b311ec 100644 --- a/sys/cmd/rc/exec.c +++ b/sys/cmd/rc/exec.c @@ -914,6 +914,8 @@ Xreadcmd(void) flush(shell.err); root = runner; + shell.prompt = "> "; + if(yyparse()){ // resource cleanup? if(runner->flag.eof) diff --git a/sys/cmd/rc/prompt.c b/sys/cmd/rc/prompt.c index e3ff7d9..d6846e6 100644 --- a/sys/cmd/rc/prompt.c +++ b/sys/cmd/rc/prompt.c @@ -1,16 +1,19 @@ #include "rc.h" + int prompt(ushort *flag) { - int f = *flag; + int fd, f = *flag; if(f){ - if(!readline("> ")){ + if(!readline(shell.prompt)){ runner->flag.eof = 1; return 0; } - print(shell.err,"\n\r"); - flush(shell.err); + fd = mapfd(0); + write(fd, "\n\r", 2); + shell.prompt = "> "; // NOTE: can't use tab here: we have a hacky prompt length computation + runner->line++; *flag = 0; } diff --git a/sys/cmd/rc/rc.h b/sys/cmd/rc/rc.h index e35c3e4..5a9aac5 100644 --- a/sys/cmd/rc/rc.h +++ b/sys/cmd/rc/rc.h @@ -152,6 +152,7 @@ struct Shell Io *err; int status; int interactive; + char *prompt; Thread *jobs; }; -- cgit v1.2.1