// // commonCRTStartup.c // // Copyright (c) 2024 Timo Kreuzer // // Implementation of common executable startup code. // // SPDX-License-Identifier: MIT // #include #include #include #include #include #include // Defined in winnt.h #define FAST_FAIL_FATAL_APP_EXIT 7 extern "C" int __cdecl main(int, char**, char**); extern "C" int __cdecl wmain(int, wchar_t**, wchar_t**); template static int call_main(); template<> int call_main() { _configure_narrow_argv(_crt_argv_unexpanded_arguments); return main(*__p___argc(), *__p___argv(), _get_initial_narrow_environment()); } template<> int call_main() { _configure_wide_argv(_crt_argv_unexpanded_arguments); return wmain(*__p___argc(), *__p___wargv(), _get_initial_wide_environment()); } static bool __scrt_initialize() { __isa_available_init(); if (!__vcrt_initialize()) { return false; } if (!__acrt_initialize()) { __vcrt_uninitialize(false); return false; } if (_initterm_e(__xi_a, __xi_z) != 0) { return false; } _initterm(__xc_a, __xc_z); return true; } template static __declspec(noinline) int __cdecl __commonCRTStartup() { int exitCode; if (!__scrt_initialize()) { __fastfail(FAST_FAIL_FATAL_APP_EXIT); } __try { exitCode = call_main(); } __except(EXCEPTION_EXECUTE_HANDLER) { exitCode = GetExceptionCode(); } __endtry exit(exitCode); }