From 5dcf15e02de10e648ac8e8d86500678f2043d2e6 Mon Sep 17 00:00:00 2001
From: Eric Andersen <andersen@codepoet.org>
Date: Sat, 24 Jul 2004 12:44:13 +0000
Subject: 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");
-- 
cgit v1.2.3-55-g6feb