# HG changeset patch # User Geoff Voelker # Date 831148758 0 # Node ID be6560506cce12ce87b725ecd7d3e851ee2d08e5 # Parent 86a1f426871e99af4dbfed7cfe07c48dcd99f1fb (WinMain): Function removed. (_start) [HAVE_NTGUI]: Don't invoke WinMain, but do set up WinMain args as crt0.c would. diff -r 86a1f426871e -r be6560506cce src/unexw32.c --- a/src/unexw32.c Fri May 03 18:35:50 1996 +0000 +++ b/src/unexw32.c Fri May 03 18:39:18 1996 +0000 @@ -67,45 +67,6 @@ HINSTANCE hprevinst = NULL; LPSTR lpCmdLine = ""; int nCmdShow = 0; - -int __stdcall -WinMain (_hinst, _hPrevInst, _lpCmdLine, _nCmdShow) - HINSTANCE _hinst; - HINSTANCE _hPrevInst; - LPSTR _lpCmdLine; - int _nCmdShow; -{ - int i, j, new_argc; - char **new_argv; - - /* Need to parse command line */ - - hinst = _hinst; - hprevinst = _hPrevInst; - lpCmdLine = _lpCmdLine; - nCmdShow = _nCmdShow; - - new_argc = __argc; - new_argv = (char **) xmalloc (sizeof (char *) * new_argc); - if (!new_argv) - return main (__argc, __argv, _environ); - - for (i = j = 0; i < __argc; i++) - { - /* Allocate a console window for stdout and stderr if requested. - We want to allocate as soon as we possibly can to catch - debugging output. */ - if (!strcmp ("-output_console", __argv[i])) - { - AllocConsole (); - new_argc--; - continue; - } - new_argv[j++] = __argv[i]; - } - - return main (new_argc, new_argv, _environ); -} #endif /* HAVE_NTGUI */ /* Startup code for running on NT. When we are running as the dumped @@ -115,11 +76,7 @@ void _start (void) { -#ifdef HAVE_NTGUI - extern void WinMainCRTStartup (void); -#else extern void mainCRTStartup (void); -#endif /* HAVE_NTGUI */ /* Cache system info, e.g., the NT page size. */ cache_system_info (); @@ -153,10 +110,12 @@ /* Invoke the NT CRT startup routine now that our housecleaning is finished. */ #ifdef HAVE_NTGUI - WinMainCRTStartup (); -#else + /* determine WinMain args like crt0.c does */ + hinst = GetModuleHandle(NULL); + lpCmdLine = GetCommandLine(); + nCmdShow = SW_SHOWDEFAULT; +#endif mainCRTStartup (); -#endif /* HAVE_NTGUI */ } /* Dump out .data and .bss sections into a new executable. */ @@ -415,7 +374,7 @@ /* The .data section. */ data_section = section; - ptr = (char *) nt_header->OptionalHeader.ImageBase + + ptr = (char *) nt_header->OptionalHeader.ImageBase + section->VirtualAddress; data_start_va = ptr; data_start_file = section->PointerToRawData;