summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/pinfo.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-12-07 22:37:12 +0000
committerChristopher Faylor <me@cgf.cx>2003-12-07 22:37:12 +0000
commit2e008fb91f34b5a257305a1e9e42f60fb0aef81d (patch)
treef6c5fd9e3d77b40fbe13f5ae6d6dbc2ebf88324c /winsup/cygwin/pinfo.cc
parent2e3ff06d3c0424e2862afba051c4928d268a21c7 (diff)
downloadcygnal-2e008fb91f34b5a257305a1e9e42f60fb0aef81d.tar.gz
cygnal-2e008fb91f34b5a257305a1e9e42f60fb0aef81d.tar.bz2
cygnal-2e008fb91f34b5a257305a1e9e42f60fb0aef81d.zip
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.
Diffstat (limited to 'winsup/cygwin/pinfo.cc')
-rw-r--r--winsup/cygwin/pinfo.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc
index a0419c8cd..b0f58b484 100644
--- a/winsup/cygwin/pinfo.cc
+++ b/winsup/cygwin/pinfo.cc
@@ -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 ()
{