2 * mainCRTStartup default entry point
4 * Copyright 2019 Jacek Caban for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #pragma makedep implib
33 int __cdecl
main(int argc
, char **argv
, char **env
);
35 static const IMAGE_NT_HEADERS
*get_nt_header( void )
37 IMAGE_DOS_HEADER
*dos
= (IMAGE_DOS_HEADER
*)NtCurrentTeb()->Peb
->ImageBaseAddress
;
38 return (const IMAGE_NT_HEADERS
*)((char *)dos
+ dos
->e_lfanew
);
41 int __cdecl
mainCRTStartup(void)
47 _configure_narrow_argv(_crt_argv_unexpanded_arguments
);
48 _initialize_narrow_environment();
51 env
= _get_initial_narrow_environment();
54 __getmainargs(&argc
, &argv
, &env
, 0, &new_mode
);
56 _set_app_type(get_nt_header()->OptionalHeader
.Subsystem
== IMAGE_SUBSYSTEM_WINDOWS_GUI
? _crt_gui_app
: _crt_console_app
);
58 ret
= main(argc
, argv
, env
);