* wincap.h (wincaps:pty_needs_alloc_console): New element.
(wincapc:pty_needs_alloc_console): New function. * wincap.cc: Add pty_needs_alloc_console throughout. * fhandler_tty.cc (fhandler_tty_slave::open): Open an "invisible" console on first pty allocation.
This commit is contained in:
parent
afa18d8a69
commit
6b3bdf38e0
|
@ -1,3 +1,11 @@
|
|||
2003-04-19 Christopher Faylor <cgf@redhat.com>
|
||||
|
||||
* wincap.h (wincaps:pty_needs_alloc_console): New element.
|
||||
(wincapc:pty_needs_alloc_console): New function.
|
||||
* wincap.cc: Add pty_needs_alloc_console throughout.
|
||||
* fhandler_tty.cc (fhandler_tty_slave::open): Open an "invisible"
|
||||
console on first pty allocation.
|
||||
|
||||
2003-04-18 Christopher Faylor <cgf@redhat.com>
|
||||
|
||||
* fhandler_tty.cc (fhandler_tty_slave::open): Allocate a console
|
||||
|
|
|
@ -9,6 +9,8 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
|||
details. */
|
||||
|
||||
#include "winsup.h"
|
||||
#include <wingdi.h>
|
||||
#include <winuser.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -554,9 +556,19 @@ fhandler_tty_slave::open (path_conv *, int flags, mode_t)
|
|||
set_open_status ();
|
||||
if (!output_done_event)
|
||||
{
|
||||
if (fhandler_console::open_fhs++ == 0)
|
||||
if (fhandler_console::open_fhs++ == 0
|
||||
&& wincap.pty_needs_alloc_console ())
|
||||
{
|
||||
BOOL b = AllocConsole ();
|
||||
BOOL b;
|
||||
HWINSTA h = CreateWindowStation (NULL, 0, GENERIC_READ | GENERIC_WRITE, &sec_none_nih);
|
||||
termios_printf ("CreateWindowStation %p, %E", h);
|
||||
if (h)
|
||||
{
|
||||
b = SetProcessWindowStation (h);
|
||||
termios_printf ("SetProcessWindowStation %d, %E", b);
|
||||
}
|
||||
b = AllocConsole (); // will cause flashing if workstation
|
||||
// stuff fails
|
||||
termios_printf ("%d = AllocConsole ()", b);
|
||||
}
|
||||
termios_printf ("incremented open_fhs %d", fhandler_console::open_fhs);
|
||||
|
|
|
@ -47,7 +47,8 @@ static NO_COPY wincaps wincap_unknown = {
|
|||
has_64bit_file_access:false,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:false,
|
||||
needs_memory_protection:false
|
||||
needs_memory_protection:false,
|
||||
pty_needs_alloc_console:false
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_95 = {
|
||||
|
@ -86,7 +87,8 @@ static NO_COPY wincaps wincap_95 = {
|
|||
has_64bit_file_access:false,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:false,
|
||||
needs_memory_protection:false
|
||||
needs_memory_protection:false,
|
||||
pty_needs_alloc_console:false
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_95osr2 = {
|
||||
|
@ -125,7 +127,8 @@ static NO_COPY wincaps wincap_95osr2 = {
|
|||
has_64bit_file_access:false,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:false,
|
||||
needs_memory_protection:false
|
||||
needs_memory_protection:false,
|
||||
pty_needs_alloc_console:false
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_98 = {
|
||||
|
@ -164,7 +167,8 @@ static NO_COPY wincaps wincap_98 = {
|
|||
has_64bit_file_access:false,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:false,
|
||||
needs_memory_protection:false
|
||||
needs_memory_protection:false,
|
||||
pty_needs_alloc_console:false
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_98se = {
|
||||
|
@ -203,7 +207,8 @@ static NO_COPY wincaps wincap_98se = {
|
|||
has_64bit_file_access:false,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:false,
|
||||
needs_memory_protection:false
|
||||
needs_memory_protection:false,
|
||||
pty_needs_alloc_console:false
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_me = {
|
||||
|
@ -242,7 +247,8 @@ static NO_COPY wincaps wincap_me = {
|
|||
has_64bit_file_access:false,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:false,
|
||||
needs_memory_protection:false
|
||||
needs_memory_protection:false,
|
||||
pty_needs_alloc_console:false
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_nt3 = {
|
||||
|
@ -281,7 +287,8 @@ static NO_COPY wincaps wincap_nt3 = {
|
|||
has_64bit_file_access:true,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:true,
|
||||
needs_memory_protection:true
|
||||
needs_memory_protection:true,
|
||||
pty_needs_alloc_console:true
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_nt4 = {
|
||||
|
@ -320,7 +327,8 @@ static NO_COPY wincaps wincap_nt4 = {
|
|||
has_64bit_file_access:true,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:true,
|
||||
needs_memory_protection:true
|
||||
needs_memory_protection:true,
|
||||
pty_needs_alloc_console:true
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_nt4sp4 = {
|
||||
|
@ -359,7 +367,8 @@ static NO_COPY wincaps wincap_nt4sp4 = {
|
|||
has_64bit_file_access:true,
|
||||
has_process_io_counters:false,
|
||||
supports_reading_modem_output_lines:true,
|
||||
needs_memory_protection:true
|
||||
needs_memory_protection:true,
|
||||
pty_needs_alloc_console:true
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_2000 = {
|
||||
|
@ -398,7 +407,8 @@ static NO_COPY wincaps wincap_2000 = {
|
|||
has_64bit_file_access:true,
|
||||
has_process_io_counters:true,
|
||||
supports_reading_modem_output_lines:true,
|
||||
needs_memory_protection:true
|
||||
needs_memory_protection:true,
|
||||
pty_needs_alloc_console:true
|
||||
};
|
||||
|
||||
static NO_COPY wincaps wincap_xp = {
|
||||
|
@ -437,7 +447,8 @@ static NO_COPY wincaps wincap_xp = {
|
|||
has_64bit_file_access:true,
|
||||
has_process_io_counters:true,
|
||||
supports_reading_modem_output_lines:true,
|
||||
needs_memory_protection:true
|
||||
needs_memory_protection:true,
|
||||
pty_needs_alloc_console:true
|
||||
};
|
||||
|
||||
wincapc wincap;
|
||||
|
|
|
@ -49,6 +49,7 @@ struct wincaps
|
|||
unsigned has_process_io_counters : 1;
|
||||
unsigned supports_reading_modem_output_lines : 1;
|
||||
unsigned needs_memory_protection : 1;
|
||||
unsigned pty_needs_alloc_console : 1;
|
||||
};
|
||||
|
||||
class wincapc
|
||||
|
@ -102,6 +103,7 @@ public:
|
|||
bool IMPLEMENT (has_process_io_counters)
|
||||
bool IMPLEMENT (supports_reading_modem_output_lines)
|
||||
bool IMPLEMENT (needs_memory_protection)
|
||||
bool IMPLEMENT (pty_needs_alloc_console)
|
||||
|
||||
#undef IMPLEMENT
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue