diff options
Diffstat (limited to '')
-rw-r--r-- | src/parser.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/parser.c b/src/parser.c index 3cebb25..444fa08 100644 --- a/src/parser.c +++ b/src/parser.c @@ -108,6 +108,7 @@ int quoteflag; /* set if (part of) last token was quoted */ static char *promptcache; +static char *rpromptcache; STATIC union node *list(int); @@ -1600,7 +1601,7 @@ STATIC void setprompt(int which) { struct stackmark smark; - const char *prompt; + const char *prompt, *rprompt; int show; needprompt = 0; @@ -1610,16 +1611,20 @@ setprompt(int which) default: #ifdef DEBUG prompt = "<internal prompt error>"; + rprompt = prompt; break; #endif case 0: prompt = nullstr; + rprompt = nullstr; break; case 1: prompt = ps1val(); + rprompt = rps1val(); break; case 2: prompt = ps2val(); + rprompt = rps2val(); break; } @@ -1633,7 +1638,9 @@ setprompt(int which) out2str(expandstr(prompt)); } else { free(promptcache); + free(rpromptcache); promptcache = savestr(expandstr(prompt)); + rpromptcache = savestr(expandstr(rprompt)); } popstackmark(&smark); } @@ -1647,6 +1654,12 @@ getprompt(void *unused) return promptcache; } +const char * +getrprompt(void *unused) +{ + return rpromptcache; +} + const char *const * findkwd(const char *s) { |