summary refs log tree commit diff
diff options
context:
space:
mode:
authorGerrit Pape <pape@smarden.org>2018-09-07 10:34:14 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2018-11-19 18:59:50 +0800
commit413c6dcc3ca3891825ae8239251140882d7c6c6c (patch)
treecf6bb66c05161a2cbad862f8ce2dc223d9cb0c11
parenteval: Report I/O error on stdout (diff)
downloaddash-413c6dcc3ca3891825ae8239251140882d7c6c6c.tar.gz
dash-413c6dcc3ca3891825ae8239251140882d7c6c6c.zip
main: Print \n upon EOF (CTRL-D) when run interactively
Exiting dash via a ^D instead of with "exit" causes dash to forget to
print a newline.

    sh-3.1$ sh
    sh-3.1$ ^D
    sh-3.1$ dash
    $ sh-3.1$

It is more neat and tidy to send a newline similarly to what bash does,
so it doesn't make the next prompt of the parent shell look ugly.

Suggested by jidanni.

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
[reworded the patch description]
Signed-off-by: Andrej Shadura <andrew.shadura@collabora.co.uk>
Bug-Debian: http://bugs.debian.org/476422
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--src/main.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index e8e4256..6d53e00 100644
--- a/src/main.c
+++ b/src/main.c
@@ -221,8 +221,15 @@ cmdloop(int top)
 			if (!top || numeof >= 50)
 				break;
 			if (!stoppedjobs()) {
-				if (!Iflag)
+				if (!Iflag) {
+					if (iflag) {
+						out2c('\n');
+#ifdef FLUSHERR
+						flushout(out2);
+#endif
+					}
 					break;
+				}
 				out2str("\nUse \"exit\" to leave shell.\n");
 			}
 			numeof++;