From 5dcf15e02de10e648ac8e8d86500678f2043d2e6 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sat, 24 Jul 2004 12:44:13 +0000 Subject: [PATCH] Paul Whittaker writes: With job control enabled, ash fails to tcsetpgrp back to initialpgrp upon exit. exitshell() should call setjobctl(0) to do this. Context: I am using a lightweight menu system (replimenu[.sf.net]) on my console, which invokes "/bin/sh -i -c /bin/login", where /bin/sh and /bin/login are busybox applets. /bin/sh is ash, with CONFIG_ASH_JOB_CONTROL=y as the sole suboption. The shell of the user concerned (nobody) is also /bin/sh (ash). When the user /bin/sh exits (and thereby login and its parent sh), replimenu receives EIO when it tries to read from the terminal. --- shell/ash.c | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/ash.c b/shell/ash.c index fd616ef4a..ee3bfb42f 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -11914,6 +11914,7 @@ exitshell(void) evalstring(p); } flushall(); + setjobctl(0); #ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY if (iflag && rootshell) { const char *hp = lookupvar("HISTFILE"); -- 2.25.1