From 750874d33de8778a469cc8c19ad6e4a509078f9b Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 12 Jan 2006 05:03:15 +0000 Subject: * fhandler.h (set_console_state_for_spawn): Whackamole the argument back to a bool. * spawn.cc (spawn_guts): Ditto, i.e., once again call set_console_state_for_spawn with an indication of whether we're about to start a cygwin process. * fhandler_console.cc (set_console_state_for_spawn): Don't set the console state if we know we're starting a cygwin process or if we're using a "real" tty. --- winsup/cygwin/ChangeLog | 11 +++++++++++ winsup/cygwin/fhandler.h | 3 +-- winsup/cygwin/fhandler_console.cc | 5 +++-- winsup/cygwin/spawn.cc | 2 +- 4 files changed, 16 insertions(+), 5 deletions(-) (limited to 'winsup/cygwin') diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 8cbd84b30..18486f8c4 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,14 @@ +2006-01-12 Christopher Faylor + + * fhandler.h (set_console_state_for_spawn): Whackamole the argument + back to a bool. + * spawn.cc (spawn_guts): Ditto, i.e., once again call + set_console_state_for_spawn with an indication of whether we're about + to start a cygwin process. + * fhandler_console.cc (set_console_state_for_spawn): Don't set the + console state if we know we're starting a cygwin process or if we're + using a "real" tty. + 2006-01-10 Corinna Vinschen * dcrt0.cc (dll_crt0_0): Remove call to wincap.init. diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index a7c759bf1..368e62e8d 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -1365,6 +1365,5 @@ class select_stuff device_specific_mailslot (0) {} }; -void __stdcall set_console_state_for_spawn (); - +void __stdcall set_console_state_for_spawn (bool); #endif /* _FHANDLER_H_ */ diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 2cf0219f2..5ca26d2f3 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -144,9 +144,10 @@ tty_list::get_tty (int n) If it is, then just return. If the console has been initialized, then set it into a more friendly state for non-cygwin apps. */ void __stdcall -set_console_state_for_spawn () +set_console_state_for_spawn (bool iscyg) { - if (fhandler_console::need_invisible ()) + if (fhandler_console::need_invisible () || iscyg + || (myself->ctty > 0 && myself->ctty != TTY_CONSOLE)) return; HANDLE h = CreateFile ("CONIN$", GENERIC_READ, FILE_SHARE_WRITE, diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 8be114807..5b36658f8 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -618,7 +618,7 @@ spawn_guts (const char * prog_arg, const char *const *argv, else system_printf ("duplicate to pid_handle failed, %E"); if (mode != _P_DETACH) - set_console_state_for_spawn (); + set_console_state_for_spawn (real_path.iscygexec ()); } /* Some file types (currently only sockets) need extra effort in the parent -- cgit v1.2.3