summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bin/dash/src/parser.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/bin/dash/src/parser.c b/bin/dash/src/parser.c
index 21052c21..499f7f8e 100644
--- a/bin/dash/src/parser.c
+++ b/bin/dash/src/parser.c
@@ -1598,7 +1598,7 @@ STATIC void
 setprompt(int which)
 {
 	struct stackmark smark;
-	const char *prompt, *rprompt;
+	const char *prompt, *rprompt, *nl;
 	int show;
 
 	needprompt = 0;
@@ -1638,6 +1638,10 @@ setprompt(int which)
 		free(rpromptcache);
 		promptcache = savestr(expandstr(prompt));
 		rpromptcache = savestr(expandstr(rprompt));
+
+		nl = strrchr(promptcache, '\n');
+		if (nl)
+			outmem(promptcache, &nl[1] - promptcache, out2);
 	}
 	popstackmark(&smark);
 }
@@ -1648,7 +1652,14 @@ setprompt(int which)
 const char *
 getprompt(void *unused)
 {
-	return promptcache;
+	const char *nl;
+
+	nl = strrchr(promptcache, '\n');
+
+	if (nl)
+		return &nl[1];
+	else
+		return promptcache;
 }
 
 const char *