diff --git a/include/main.h b/include/main.h index 4d1acf2b33b..c473364244e 100644 --- a/include/main.h +++ b/include/main.h @@ -8,7 +8,7 @@ #include "windef.h" extern void MAIN_Usage(char*); -extern BOOL MAIN_MainInit(void); +extern BOOL MAIN_MainInit( int *argc, char *argv[] ); extern BOOL MAIN_WineInit( int *argc, char *argv[] ); extern HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] ); extern int MAIN_GetLanguageID(char*lang, char*country, char*charset, char*dialect); diff --git a/loader/main.c b/loader/main.c index 4a4407e6418..a1c3115d38f 100644 --- a/loader/main.c +++ b/loader/main.c @@ -57,14 +57,20 @@ DEFAULT_DEBUG_CHANNEL(server) /*********************************************************************** * Main initialisation routine */ -BOOL MAIN_MainInit(void) +BOOL MAIN_MainInit( int *argc, char *argv[] ) { + /* Create the initial process */ + if (!PROCESS_Init()) return 0; + /* Set server debug level */ CLIENT_SetDebug( TRACE_ON(server) ); /* Initialize syslevel handling */ SYSLEVEL_Init(); + /* Parse command line arguments */ + MAIN_WineInit( argc, argv ); + /* Load the configuration file */ if (!PROFILE_LoadWineIni()) return FALSE; @@ -98,6 +104,10 @@ BOOL MAIN_MainInit(void) /* Read DOS config.sys */ if (!DOSCONF_ReadConfig()) return FALSE; + /* Initialize KERNEL */ + if (!LoadLibrary16( "KRNL386.EXE" )) return FALSE; + if (!LoadLibraryA( "KERNEL32" )) return FALSE; + return TRUE; } @@ -288,18 +298,8 @@ HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] ) OFSTRUCT ofs; HMODULE16 hModule; - /* Create the initial process */ - if (!PROCESS_Init()) return 0; - - /* Parse command line arguments */ - MAIN_WineInit( argc, argv ); - /* Main initialization */ - if (!MAIN_MainInit()) return 0; - - /* Initialize KERNEL */ - if (!LoadLibrary16( "KRNL386.EXE" )) return 0; - if (!LoadLibraryA( "KERNEL32" )) return 0; + if (!MAIN_MainInit( argc, argv )) return 0; /* Create and switch to initial task */ if (!(wm = ELF_CreateDummyModule( argv[0], argv[0] ))) diff --git a/miscemu/main.c b/miscemu/main.c index ace15e52c82..44cede0c1c9 100644 --- a/miscemu/main.c +++ b/miscemu/main.c @@ -115,25 +115,13 @@ int main( int argc, char *argv[] ) */ DEBUG_argv0 = argv[0]; - /* Create the initial process */ - if (!PROCESS_Init()) return FALSE; - - /* Parse command-line */ - if (!MAIN_WineInit( &argc, argv )) return 1; - MAIN_argc = argc; MAIN_argv = argv; - /* Set up debugger hook */ EXC_SetDebugEventHook( wine_debugger ); - - if (Options.debug) - TASK_AddTaskEntryBreakpoint = DEBUG_AddTaskEntryBreakpoint; + TASK_AddTaskEntryBreakpoint = DEBUG_AddTaskEntryBreakpoint; /* Initialize everything */ - if (!MAIN_MainInit()) return 1; - - /* Load kernel modules */ - if (!LoadLibrary16( "KRNL386.EXE" )) return 1; - if (!LoadLibraryA( "KERNEL32" )) return 1; + if (!MAIN_MainInit( &argc, argv )) return 1; + MAIN_argc = argc; MAIN_argv = argv; /* Create initial task */ if ( !(pModule = NE_GetPtr( GetModuleHandle16( "KERNEL" ) )) ) return 1; diff --git a/scheduler/process.c b/scheduler/process.c index 1e0bb8a7bbf..b5f3b4e4641 100644 --- a/scheduler/process.c +++ b/scheduler/process.c @@ -23,6 +23,7 @@ #include "pe_image.h" #include "task.h" #include "server.h" +#include "options.h" #include "callback.h" #include "debugtools.h" @@ -482,7 +483,7 @@ void PROCESS_Start(void) } /* If requested, add entry point breakpoint */ - if ( TASK_AddTaskEntryBreakpoint ) + if ( Options.debug && TASK_AddTaskEntryBreakpoint ) TASK_AddTaskEntryBreakpoint( pdb->task ); /* Now call the entry point */