Change use of BOOL, TRUE, FALSE to bool, true, false, as appropriate,
throughout. * tty.cc (tty::common_init): Remove call to SetKernelObjectSecurity and edit some comments. * cygheap.h (init_cygheap::ctty): Add new element. * devices.in (device::parse): Remove special handling for /dev/tty. * devices.cc: Regenerate. * dtable.cc (build_fh_pc): Don't reset /dev/tty device. Let the device opener do that. * fhandler_termios.cc (tty_min::set_ctty): Redefine to _pinfo class. * fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Avoid setting noninherit flag for ctty. * tty.h: Move BOOLs to bools. (tty_min::set_ctty): Redeclare to _pinfo class. * pinfo.cc (_pinfo::set_ctty): Define new function based on tty_min::set_ctty. Change first argument from tty number to tty_min class. * pinfo.h (_pinfo::set_ctty): Declare. * fhandler_console.cc (fhandler_console::get_tty_stuff): Reflect move of set_ctty to _pinfo class. * fhandler_tty.cc (fhandler_tty_slave::open): Treat FH_TTY specially. Use saved cygheap value if it exists. Otherwise convert to real device and save on first time open. (fhandler_tty_common::dup): Potentially set controlling tty if duping a slave tty. * syscalls.cc (setsid): Close controlling tty in cygheap. * tty.cc: Change some BOOLs to bools.
This commit is contained in:
@@ -254,6 +254,36 @@ pinfo::set_acl()
|
||||
debug_printf ("SetKernelObjectSecurity %E");
|
||||
}
|
||||
|
||||
void
|
||||
_pinfo::set_ctty (tty_min *tc, int flags, fhandler_tty_slave *fhctty)
|
||||
{
|
||||
int initial_ctty = ctty;
|
||||
if ((ctty < 0 || ctty == tc->ntty) && !(flags & O_NOCTTY))
|
||||
{
|
||||
ctty = tc->ntty;
|
||||
syscall_printf ("attached tty%d sid %d, pid %d, tty->pgid %d, tty->sid %d",
|
||||
tc->ntty, sid, pid, pgid, tc->getsid ());
|
||||
|
||||
pinfo p (tc->getsid ());
|
||||
if (sid == pid && (!p || p->pid == pid || !proc_exists (p)))
|
||||
{
|
||||
paranoid_printf ("resetting tty%d sid. Was %d, now %d. pgid was %d, now %d.",
|
||||
tc->ntty, tc->getsid (), sid, tc->getpgid (), pgid);
|
||||
/* We are the session leader */
|
||||
tc->setsid (sid);
|
||||
tc->setpgid (pgid);
|
||||
}
|
||||
else
|
||||
sid = tc->getsid ();
|
||||
if (tc->getpgid () == 0)
|
||||
tc->setpgid (pgid);
|
||||
if (fhctty)
|
||||
cygheap->ctty = *fhctty;
|
||||
else if (initial_ctty < 0)
|
||||
assert (cygheap->ctty.get_io_handle () == NULL);
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
_pinfo::alive ()
|
||||
{
|
||||
|
Reference in New Issue
Block a user