Module: wine Branch: master Commit: af2e40ea26393032399b47379019b7c1083bb924 URL: http://source.winehq.org/git/wine.git/?a=commit;h=af2e40ea26393032399b473790...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Feb 24 18:05:57 2009 +0100
winecrt0: Add entry point code for stand-alone 16-bit executables.
---
dlls/kernel32/kernel32.spec | 1 + dlls/winecrt0/Makefile.in | 1 + dlls/winecrt0/exe16_entry.c | 48 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index b0f4ee7..c615ef1 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1225,6 +1225,7 @@ @ stdcall GlobalDOSFree16(long) @ stdcall GlobalFlags16(long) @ stdcall GlobalReAlloc16(long long long) +@ stdcall InitTask16(ptr) @ stdcall IsBadReadPtr16(long long) @ stdcall IsTask16(long) @ stdcall LoadModule16(str long) diff --git a/dlls/winecrt0/Makefile.in b/dlls/winecrt0/Makefile.in index e135f9d..0f3b2de 100644 --- a/dlls/winecrt0/Makefile.in +++ b/dlls/winecrt0/Makefile.in @@ -9,6 +9,7 @@ C_SRCS = \ dll_entry.c \ dll_main.c \ drv_entry.c \ + exe16_entry.c \ exe_entry.c \ exe_main.c \ exe_wentry.c \ diff --git a/dlls/winecrt0/exe16_entry.c b/dlls/winecrt0/exe16_entry.c new file mode 100644 index 0000000..2599332 --- /dev/null +++ b/dlls/winecrt0/exe16_entry.c @@ -0,0 +1,48 @@ +/* + * Default entry point for a 16-bit exe + * + * Copyright 2009 Alexandre Julliard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdarg.h> +#include "windef.h" +#include "winbase.h" +#include "wownt32.h" +#include "wine/winbase16.h" + +#ifdef __i386__ + +extern WORD WINAPI WinMain16( HINSTANCE16 inst, HINSTANCE16 prev, LPSTR cmdline, WORD show ); + +void WINAPI DECLSPEC_HIDDEN __wine_spec_exe16_entry( CONTEXT *context ) +{ + PDB16 *psp; + WORD len; + LPSTR cmdline; + + InitTask16( context ); + + psp = MapSL( WOWGlobalLock16( context->SegEs )); + len = psp->cmdLine[0]; + cmdline = HeapAlloc( GetProcessHeap(), 0, len + 1 ); + memcpy( cmdline, psp->cmdLine + 1, len ); + cmdline[len] = 0; + + ExitThread( WinMain16( context->Edi, context->Esi, cmdline, context->Edx )); +} + +#endif /* __i386__ */