diff options
author | Christopher Faylor <me@cgf.cx> | 2003-12-07 22:37:12 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-12-07 22:37:12 +0000 |
commit | 2e008fb91f34b5a257305a1e9e42f60fb0aef81d (patch) | |
tree | f6c5fd9e3d77b40fbe13f5ae6d6dbc2ebf88324c /winsup/cygwin/pinfo.cc | |
parent | 2e3ff06d3c0424e2862afba051c4928d268a21c7 (diff) | |
download | cygnal-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.cc | 30 |
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 () { |