* dcrt0.cc (initial_env): Don't attempt stracing if dynamically loaded.

(dll_crt0_0): Move console initialization earlier.
* init.cc (dll_entry): Move console initialization here.
* exceptions.cc (init_console_handler): Fully remove any old console handler.
* spawn.cc (spawn_guts): Don't fill out windows argv if we've deduced that this
is a cygwin-using program.
(av::fixup): Always check executables to see if they are using cygwin1.dll.
Don't consider .com files to be scripts.
* hookapi.cc (rvadelta): New function.
(PEHeaderFromHModule): Simplify slightly.
(hook_or_detect_cygwin): Use passed in name argument for "HMODULE" rather than
incorrectly reading current program.  Calculate delta needed to read image data
and file names if this isn't a real "HMODULE".
This commit is contained in:
Christopher Faylor
2005-09-07 03:10:17 +00:00
parent e92fdf0163
commit 41ff9d8c7d
6 changed files with 64 additions and 15 deletions

View File

@ -123,7 +123,8 @@ void
init_console_handler (BOOL install_handler)
{
BOOL res;
SetConsoleCtrlHandler (ctrl_c_handler, FALSE);
while (SetConsoleCtrlHandler (ctrl_c_handler, FALSE))
continue;
if (install_handler)
res = SetConsoleCtrlHandler (ctrl_c_handler, TRUE);
else if (wincap.has_null_console_handler_routine ())
@ -591,7 +592,11 @@ int __stdcall
handle_sigsuspend (sigset_t tempmask)
{
if (&_my_tls != _main_tls)
Sleep (INFINITE);
{
cancelable_wait (signal_arrived, INFINITE, cw_cancel_self);
return -1;
}
sigset_t oldmask = myself->getsigmask (); // Remember for restoration
set_signal_mask (tempmask, myself->getsigmask ());
@ -845,6 +850,11 @@ ctrl_c_handler (DWORD type)
_my_tls.remove (INFINITE);
#if 0
if (type == CTRL_C_EVENT || type == CTRL_BREAK_EVENT)
proc_subproc (PROC_KILLFORKED, 0);
#endif
/* Return FALSE to prevent an "End task" dialog box from appearing
for each Cygwin process window that's open when the computer
is shut down or console window is closed. */