* fhandler.h (set_console_state_for_spawn): Add an argument to the declaration.
* fhandler_console.cc (set_console_state_for_spawn): Ditto for the definition. Only set invisible console for non-cygwin process. Remove debugging leftover. * spawn.cc (spawn_guts): Pass argument denoting whether this is a cygwin process to set_console_state_for_spawn and only call this function when exec'ing.
This commit is contained in:
parent
7e958b2e6a
commit
7a01aa546d
|
@ -1,3 +1,14 @@
|
||||||
|
2005-12-19 Christopher Faylor <cgf@timesys.com>
|
||||||
|
|
||||||
|
* fhandler.h (set_console_state_for_spawn): Add an argument to the
|
||||||
|
declaration.
|
||||||
|
* fhandler_console.cc (set_console_state_for_spawn): Ditto for the
|
||||||
|
definition. Only set invisible console for non-cygwin process. Remove
|
||||||
|
debugging leftover.
|
||||||
|
* spawn.cc (spawn_guts): Pass argument denoting whether this is a
|
||||||
|
cygwin process to set_console_state_for_spawn and only call this
|
||||||
|
function when exec'ing.
|
||||||
|
|
||||||
2005-12-19 Corinna Vinschen <corinna@vinschen.de>
|
2005-12-19 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* mmap.cc (fhandler_dev_zero::mmap): Call VirtualFree(MEM_RELEASE)
|
* mmap.cc (fhandler_dev_zero::mmap): Call VirtualFree(MEM_RELEASE)
|
||||||
|
|
|
@ -1364,6 +1364,6 @@ class select_stuff
|
||||||
device_specific_mailslot (0) {}
|
device_specific_mailslot (0) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
void __stdcall set_console_state_for_spawn ();
|
void __stdcall set_console_state_for_spawn (bool) __attribute__ ((regparm (1)));
|
||||||
|
|
||||||
#endif /* _FHANDLER_H_ */
|
#endif /* _FHANDLER_H_ */
|
||||||
|
|
|
@ -138,14 +138,13 @@ tty_list::get_tty (int n)
|
||||||
return &nada;
|
return &nada;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Determine if a console is associated with this process prior to a spawn.
|
/* Determine if a console is associated with this process prior to a spawn.
|
||||||
If it is, then we'll return 1. If the console has been initialized, then
|
If it is, then we'll return 1. If the console has been initialized, then
|
||||||
set it into a more friendly state for non-cygwin apps. */
|
set it into a more friendly state for non-cygwin apps. */
|
||||||
void __stdcall
|
void __stdcall
|
||||||
set_console_state_for_spawn ()
|
set_console_state_for_spawn (bool noncygwin_process)
|
||||||
{
|
{
|
||||||
if (fhandler_console::need_invisible ())
|
if (noncygwin_process && fhandler_console::need_invisible ())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HANDLE h = CreateFile ("CONIN$", GENERIC_READ, FILE_SHARE_WRITE,
|
HANDLE h = CreateFile ("CONIN$", GENERIC_READ, FILE_SHARE_WRITE,
|
||||||
|
@ -1849,7 +1848,7 @@ fhandler_console::need_invisible ()
|
||||||
b = AllocConsole (); // will cause flashing if workstation
|
b = AllocConsole (); // will cause flashing if workstation
|
||||||
// stuff fails
|
// stuff fails
|
||||||
debug_printf ("h (%p), horig (%p)", h, horig);
|
debug_printf ("h (%p), horig (%p)", h, horig);
|
||||||
if (0 && horig && h && h != horig && SetProcessWindowStation (horig))
|
if (horig && h && h != horig && SetProcessWindowStation (horig))
|
||||||
CloseHandle (h);
|
CloseHandle (h);
|
||||||
termios_printf ("%d = AllocConsole (), %E", b);
|
termios_printf ("%d = AllocConsole (), %E", b);
|
||||||
invisible_console = true;
|
invisible_console = true;
|
||||||
|
|
|
@ -583,8 +583,6 @@ spawn_guts (const char * prog_arg, const char *const *argv,
|
||||||
sigproc_printf ("priority class %d", flags);
|
sigproc_printf ("priority class %d", flags);
|
||||||
flags |= CREATE_DEFAULT_ERROR_MODE | CREATE_SEPARATE_WOW_VDM;
|
flags |= CREATE_DEFAULT_ERROR_MODE | CREATE_SEPARATE_WOW_VDM;
|
||||||
|
|
||||||
set_console_state_for_spawn ();
|
|
||||||
|
|
||||||
if (mode == _P_DETACH)
|
if (mode == _P_DETACH)
|
||||||
flags |= DETACHED_PROCESS;
|
flags |= DETACHED_PROCESS;
|
||||||
|
|
||||||
|
@ -612,6 +610,7 @@ spawn_guts (const char * prog_arg, const char *const *argv,
|
||||||
ProtectHandle (cygheap->pid_handle);
|
ProtectHandle (cygheap->pid_handle);
|
||||||
else
|
else
|
||||||
system_printf ("duplicate to pid_handle failed, %E");
|
system_printf ("duplicate to pid_handle failed, %E");
|
||||||
|
set_console_state_for_spawn (real_path.iscygexec ());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Some file types (currently only sockets) need extra effort in the parent
|
/* Some file types (currently only sockets) need extra effort in the parent
|
||||||
|
|
Loading…
Reference in New Issue