summaryrefslogtreecommitdiffhomepage
path: root/shell
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-09-12 11:21:48 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2021-09-14 08:25:58 +0200
commit5726df5f94f973eaa097d9853ceff2bd6b748d97 (patch)
treece8fda0d1d224afa183fc13b44ddc365715907a4 /shell
parent50239a665c88f5a95ce41146804500f5da90b19e (diff)
ash: let ignoreeof only affect interactive shells
Commit fb7d6c89 from Harald van Dijk's gwsh variant of ash (https://github.com/hvdijk/gwsh): ignoreeof is documented as only having an effect for interactive shells, but is implemented as having mostly the same effect for interactive shells as for non-interactive shells. Change the implementation to match the documentation. Test case: $SHELL -o ignoreeof /dev/null function old new delta cmdloop 359 361 +2 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 2/0) Total: 2 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 5743b2377..b12b859d5 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -13508,12 +13508,13 @@ cmdloop(int top)
if (!top || numeof >= 50)
break;
if (!stoppedjobs()) {
+ if (!iflag)
+ break;
if (!Iflag) {
- if (iflag) {
- newline_and_flush(stderr);
- }
+ newline_and_flush(stderr);
break;
}
+ /* "set -o ignoreeof" active, do not exit command loop on ^D */
out2str("\nUse \"exit\" to leave shell.\n");
}
numeof++;