* fhandler_tty.cc (fhandler_tty_slave::open): Reset the current windows station

whenever ctty == -1 regardles of whetehr there's a windows station already
assigned.  Close the old windows station in this situation.
* pinfo.cc (_pinfo::set_ctty): Reinstate incrementing of console count when
recording ctty so that the current tty is always around.
This commit is contained in:
Christopher Faylor
2005-11-24 02:34:31 +00:00
parent a39cfda7ba
commit 819dbaebd6
4 changed files with 16 additions and 1 deletions

View File

@ -580,7 +580,8 @@ fhandler_tty_slave::open (int flags, mode_t)
&& wincap.pty_needs_alloc_console ())
{
BOOL b;
if (!GetProcessWindowStation ())
HWINSTA horig = GetProcessWindowStation ();
if (myself->ctty == -1)
{
HWINSTA h = CreateWindowStation (NULL, 0, GENERIC_READ | GENERIC_WRITE, &sec_none_nih);
termios_printf ("CreateWindowStation %p, %E", h);
@ -589,6 +590,8 @@ fhandler_tty_slave::open (int flags, mode_t)
b = SetProcessWindowStation (h);
termios_printf ("SetProcessWindowStation %d, %E", b);
}
if (horig)
CloseWindowStation (horig);
}
b = AllocConsole (); // will cause flashing if workstation
// stuff fails