kernel: Use a magic ConsoleHandle value instead of create flag to pass

the CREATE_NEW_CONSOLE flag to the child.
This commit is contained in:
Alexandre Julliard 2006-02-05 12:24:43 +01:00
parent 645c0cc63c
commit 626669e1e3
2 changed files with 7 additions and 10 deletions

View File

@ -50,8 +50,6 @@
extern int __wine_set_signal_handler(unsigned, int (*)(unsigned)); extern int __wine_set_signal_handler(unsigned, int (*)(unsigned));
extern int main_create_flags;
static CRITICAL_SECTION ldt_section; static CRITICAL_SECTION ldt_section;
static CRITICAL_SECTION_DEBUG critsect_debug = static CRITICAL_SECTION_DEBUG critsect_debug =
{ {
@ -142,19 +140,17 @@ static BOOL process_attach(void)
/* finish the process initialisation for console bits, if needed */ /* finish the process initialisation for console bits, if needed */
__wine_set_signal_handler(SIGINT, CONSOLE_HandleCtrlC); __wine_set_signal_handler(SIGINT, CONSOLE_HandleCtrlC);
if (main_create_flags & CREATE_NEW_CONSOLE) if (NtCurrentTeb()->Peb->ProcessParameters->ConsoleHandle == (HANDLE)1) /* FIXME */
{ {
HMODULE mod = GetModuleHandleA(0); HMODULE mod = GetModuleHandleA(0);
if (RtlImageNtHeader(mod)->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI) if (RtlImageNtHeader(mod)->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI)
AllocConsole(); AllocConsole();
} }
else if (!(main_create_flags & DETACHED_PROCESS)) /* else TODO for DETACHED_PROCESS:
{ * 1/ inherit console + handles
/* 1/ shall inherit console + handles * 2/ create std handles, if handles are not inherited
* 2/ shall create std handles, if handles are not inherited * TBD when not using wineserver handles for console handles
* TBD when not using wineserver handles for console handles */
*/
}
/* Create 16-bit task */ /* Create 16-bit task */
LoadLibrary16( "krnl386.exe" ); LoadLibrary16( "krnl386.exe" );

View File

@ -1426,6 +1426,7 @@ static RTL_USER_PROCESS_PARAMETERS *create_user_params( LPCWSTR filename, LPCWST
} }
if (flags & CREATE_NEW_PROCESS_GROUP) params->ConsoleFlags = 1; if (flags & CREATE_NEW_PROCESS_GROUP) params->ConsoleFlags = 1;
if (flags & CREATE_NEW_CONSOLE) params->ConsoleHandle = (HANDLE)1; /* FIXME: cf. kernel_main.c */
params->hStdInput = startup->hStdInput; params->hStdInput = startup->hStdInput;
params->hStdOutput = startup->hStdOutput; params->hStdOutput = startup->hStdOutput;