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.
This commit is contained in:
Eric Andersen 2004-07-24 12:44:13 +00:00
parent 7991ad1720
commit 5dcf15e02d

View File

@ -11914,6 +11914,7 @@ exitshell(void)
evalstring(p); evalstring(p);
} }
flushall(); flushall();
setjobctl(0);
#ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY #ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY
if (iflag && rootshell) { if (iflag && rootshell) {
const char *hp = lookupvar("HISTFILE"); const char *hp = lookupvar("HISTFILE");