Moved __mingw_get_msvcrt_handle to libmsvcrt.a and hardcode it to load msvcrt.dll (other msvcr*.dll variants no longer use that function). git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@5898 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index fd9f516..5341ff8 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am
@@ -118,6 +118,7 @@ libsrc/wspiapi/WspiapiFreeAddrInfo.c src_msvcrt=\ + crt/msvcrt.c \ misc/invalid_parameter_handler.c \ misc/lc_locale_func.c \ misc/output_format.c \
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in index 695d29d..f7bb748 100644 --- a/mingw-w64-crt/Makefile.in +++ b/mingw-w64-crt/Makefile.in
@@ -1064,22 +1064,22 @@ am_lib32_libmoldname_a_OBJECTS = lib32_libmoldname_a_OBJECTS = $(am_lib32_libmoldname_a_OBJECTS) lib32_libmsvcrt_a_LIBADD = -am__lib32_libmsvcrt_a_SOURCES_DIST = misc/invalid_parameter_handler.c \ - misc/lc_locale_func.c misc/output_format.c secapi/_access_s.c \ - secapi/_cgets_s.c secapi/_cgetws_s.c secapi/_chsize_s.c \ - secapi/_cprintf_s.c secapi/_cprintf_s_l.c secapi/_ctime32_s.c \ - secapi/_ctime64_s.c secapi/_cwprintf_s.c \ - secapi/_cwprintf_s_l.c secapi/_gmtime32_s.c \ - secapi/_gmtime64_s.c secapi/_localtime32_s.c \ - secapi/_localtime64_s.c secapi/_mktemp_s.c secapi/_strdate_s.c \ - secapi/_strtime_s.c secapi/_umask_s.c secapi/_vcprintf_s.c \ - secapi/_vcprintf_s_l.c secapi/_vcwprintf_s.c \ - secapi/_vcwprintf_s_l.c secapi/_waccess_s.c \ - secapi/_wasctime_s.c secapi/_wctime32_s.c secapi/_wctime64_s.c \ - secapi/_wstrtime_s.c secapi/_wmktemp_s.c secapi/_wstrdate_s.c \ - secapi/asctime_s.c secapi/memcpy_s.c secapi/vsprintf_s.c \ - secapi/wmemcpy_s.c lib32/msvcrt.def.in -am__objects_18 = \ +am__lib32_libmsvcrt_a_SOURCES_DIST = crt/msvcrt.c \ + misc/invalid_parameter_handler.c misc/lc_locale_func.c \ + misc/output_format.c secapi/_access_s.c secapi/_cgets_s.c \ + secapi/_cgetws_s.c secapi/_chsize_s.c secapi/_cprintf_s.c \ + secapi/_cprintf_s_l.c secapi/_ctime32_s.c secapi/_ctime64_s.c \ + secapi/_cwprintf_s.c secapi/_cwprintf_s_l.c \ + secapi/_gmtime32_s.c secapi/_gmtime64_s.c \ + secapi/_localtime32_s.c secapi/_localtime64_s.c \ + secapi/_mktemp_s.c secapi/_strdate_s.c secapi/_strtime_s.c \ + secapi/_umask_s.c secapi/_vcprintf_s.c secapi/_vcprintf_s_l.c \ + secapi/_vcwprintf_s.c secapi/_vcwprintf_s_l.c \ + secapi/_waccess_s.c secapi/_wasctime_s.c secapi/_wctime32_s.c \ + secapi/_wctime64_s.c secapi/_wstrtime_s.c secapi/_wmktemp_s.c \ + secapi/_wstrdate_s.c secapi/asctime_s.c secapi/memcpy_s.c \ + secapi/vsprintf_s.c secapi/wmemcpy_s.c lib32/msvcrt.def.in +am__objects_18 = crt/lib32_libmsvcrt_a-msvcrt.$(OBJEXT) \ misc/lib32_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT) \ misc/lib32_libmsvcrt_a-lc_locale_func.$(OBJEXT) \ misc/lib32_libmsvcrt_a-output_format.$(OBJEXT) \ @@ -2161,22 +2161,22 @@ am_lib64_libmoldname_a_OBJECTS = lib64_libmoldname_a_OBJECTS = $(am_lib64_libmoldname_a_OBJECTS) lib64_libmsvcrt_a_LIBADD = -am__lib64_libmsvcrt_a_SOURCES_DIST = misc/invalid_parameter_handler.c \ - misc/lc_locale_func.c misc/output_format.c secapi/_access_s.c \ - secapi/_cgets_s.c secapi/_cgetws_s.c secapi/_chsize_s.c \ - secapi/_cprintf_s.c secapi/_cprintf_s_l.c secapi/_ctime32_s.c \ - secapi/_ctime64_s.c secapi/_cwprintf_s.c \ - secapi/_cwprintf_s_l.c secapi/_gmtime32_s.c \ - secapi/_gmtime64_s.c secapi/_localtime32_s.c \ - secapi/_localtime64_s.c secapi/_mktemp_s.c secapi/_strdate_s.c \ - secapi/_strtime_s.c secapi/_umask_s.c secapi/_vcprintf_s.c \ - secapi/_vcprintf_s_l.c secapi/_vcwprintf_s.c \ - secapi/_vcwprintf_s_l.c secapi/_waccess_s.c \ - secapi/_wasctime_s.c secapi/_wctime32_s.c secapi/_wctime64_s.c \ - secapi/_wstrtime_s.c secapi/_wmktemp_s.c secapi/_wstrdate_s.c \ - secapi/asctime_s.c secapi/memcpy_s.c secapi/vsprintf_s.c \ - secapi/wmemcpy_s.c lib64/msvcrt.def.in -am__objects_47 = \ +am__lib64_libmsvcrt_a_SOURCES_DIST = crt/msvcrt.c \ + misc/invalid_parameter_handler.c misc/lc_locale_func.c \ + misc/output_format.c secapi/_access_s.c secapi/_cgets_s.c \ + secapi/_cgetws_s.c secapi/_chsize_s.c secapi/_cprintf_s.c \ + secapi/_cprintf_s_l.c secapi/_ctime32_s.c secapi/_ctime64_s.c \ + secapi/_cwprintf_s.c secapi/_cwprintf_s_l.c \ + secapi/_gmtime32_s.c secapi/_gmtime64_s.c \ + secapi/_localtime32_s.c secapi/_localtime64_s.c \ + secapi/_mktemp_s.c secapi/_strdate_s.c secapi/_strtime_s.c \ + secapi/_umask_s.c secapi/_vcprintf_s.c secapi/_vcprintf_s_l.c \ + secapi/_vcwprintf_s.c secapi/_vcwprintf_s_l.c \ + secapi/_waccess_s.c secapi/_wasctime_s.c secapi/_wctime32_s.c \ + secapi/_wctime64_s.c secapi/_wstrtime_s.c secapi/_wmktemp_s.c \ + secapi/_wstrdate_s.c secapi/asctime_s.c secapi/memcpy_s.c \ + secapi/vsprintf_s.c secapi/wmemcpy_s.c lib64/msvcrt.def.in +am__objects_47 = crt/lib64_libmsvcrt_a-msvcrt.$(OBJEXT) \ misc/lib64_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT) \ misc/lib64_libmsvcrt_a-lc_locale_func.$(OBJEXT) \ misc/lib64_libmsvcrt_a-output_format.$(OBJEXT) \ @@ -3781,6 +3781,7 @@ libsrc/wspiapi/WspiapiFreeAddrInfo.c src_msvcrt = \ + crt/msvcrt.c \ misc/invalid_parameter_handler.c \ misc/lc_locale_func.c \ misc/output_format.c \ @@ -6314,6 +6315,8 @@ $(AM_V_at)-rm -f lib32/libmoldname.a $(AM_V_AR)$(lib32_libmoldname_a_AR) lib32/libmoldname.a $(lib32_libmoldname_a_OBJECTS) $(lib32_libmoldname_a_LIBADD) $(AM_V_at)$(RANLIB) lib32/libmoldname.a +crt/lib32_libmsvcrt_a-msvcrt.$(OBJEXT): crt/$(am__dirstamp) \ + crt/$(DEPDIR)/$(am__dirstamp) misc/lib32_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT): \ misc/$(am__dirstamp) misc/$(DEPDIR)/$(am__dirstamp) misc/lib32_libmsvcrt_a-lc_locale_func.$(OBJEXT): misc/$(am__dirstamp) \ @@ -7894,6 +7897,8 @@ $(AM_V_at)-rm -f lib64/libmoldname.a $(AM_V_AR)$(lib64_libmoldname_a_AR) lib64/libmoldname.a $(lib64_libmoldname_a_OBJECTS) $(lib64_libmoldname_a_LIBADD) $(AM_V_at)$(RANLIB) lib64/libmoldname.a +crt/lib64_libmsvcrt_a-msvcrt.$(OBJEXT): crt/$(am__dirstamp) \ + crt/$(DEPDIR)/$(am__dirstamp) misc/lib64_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT): \ misc/$(am__dirstamp) misc/$(DEPDIR)/$(am__dirstamp) misc/lib64_libmsvcrt_a-lc_locale_func.$(OBJEXT): misc/$(am__dirstamp) \ @@ -9291,6 +9296,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib32_libmingw32_a-xtxtmode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib32_libmingwex_a-dllentry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib32_libmingwex_a-dllmain.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib32_libmsvcrt_a-msvcrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib64_libmingw32_a-CRT_fp10.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib64_libmingw32_a-_newmode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib64_libmingw32_a-atonexit.Po@am__quote@ @@ -9322,6 +9328,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib64_libmingw32_a-xtxtmode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib64_libmingwex_a-dllentry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib64_libmingwex_a-dllmain.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@crt/$(DEPDIR)/lib64_libmsvcrt_a-msvcrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gdtoa/$(DEPDIR)/lib32_libmingwex_a-arithchk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gdtoa/$(DEPDIR)/lib32_libmingwex_a-dmisc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gdtoa/$(DEPDIR)/lib32_libmingwex_a-dtoa.Po@am__quote@ @@ -19051,6 +19058,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwthrd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsrc/lib32_libmingwthrd_a-mingwthrd_mt.obj `if test -f 'libsrc/mingwthrd_mt.c'; then $(CYGPATH_W) 'libsrc/mingwthrd_mt.c'; else $(CYGPATH_W) '$(srcdir)/libsrc/mingwthrd_mt.c'; fi` +crt/lib32_libmsvcrt_a-msvcrt.o: crt/msvcrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crt/lib32_libmsvcrt_a-msvcrt.o -MD -MP -MF crt/$(DEPDIR)/lib32_libmsvcrt_a-msvcrt.Tpo -c -o crt/lib32_libmsvcrt_a-msvcrt.o `test -f 'crt/msvcrt.c' || echo '$(srcdir)/'`crt/msvcrt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crt/$(DEPDIR)/lib32_libmsvcrt_a-msvcrt.Tpo crt/$(DEPDIR)/lib32_libmsvcrt_a-msvcrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crt/msvcrt.c' object='crt/lib32_libmsvcrt_a-msvcrt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crt/lib32_libmsvcrt_a-msvcrt.o `test -f 'crt/msvcrt.c' || echo '$(srcdir)/'`crt/msvcrt.c + +crt/lib32_libmsvcrt_a-msvcrt.obj: crt/msvcrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crt/lib32_libmsvcrt_a-msvcrt.obj -MD -MP -MF crt/$(DEPDIR)/lib32_libmsvcrt_a-msvcrt.Tpo -c -o crt/lib32_libmsvcrt_a-msvcrt.obj `if test -f 'crt/msvcrt.c'; then $(CYGPATH_W) 'crt/msvcrt.c'; else $(CYGPATH_W) '$(srcdir)/crt/msvcrt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crt/$(DEPDIR)/lib32_libmsvcrt_a-msvcrt.Tpo crt/$(DEPDIR)/lib32_libmsvcrt_a-msvcrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crt/msvcrt.c' object='crt/lib32_libmsvcrt_a-msvcrt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crt/lib32_libmsvcrt_a-msvcrt.obj `if test -f 'crt/msvcrt.c'; then $(CYGPATH_W) 'crt/msvcrt.c'; else $(CYGPATH_W) '$(srcdir)/crt/msvcrt.c'; fi` + misc/lib32_libmsvcrt_a-invalid_parameter_handler.o: misc/invalid_parameter_handler.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib32_libmsvcrt_a-invalid_parameter_handler.o -MD -MP -MF misc/$(DEPDIR)/lib32_libmsvcrt_a-invalid_parameter_handler.Tpo -c -o misc/lib32_libmsvcrt_a-invalid_parameter_handler.o `test -f 'misc/invalid_parameter_handler.c' || echo '$(srcdir)/'`misc/invalid_parameter_handler.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) misc/$(DEPDIR)/lib32_libmsvcrt_a-invalid_parameter_handler.Tpo misc/$(DEPDIR)/lib32_libmsvcrt_a-invalid_parameter_handler.Po @@ -27955,6 +27976,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwthrd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsrc/lib64_libmingwthrd_a-mingwthrd_mt.obj `if test -f 'libsrc/mingwthrd_mt.c'; then $(CYGPATH_W) 'libsrc/mingwthrd_mt.c'; else $(CYGPATH_W) '$(srcdir)/libsrc/mingwthrd_mt.c'; fi` +crt/lib64_libmsvcrt_a-msvcrt.o: crt/msvcrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crt/lib64_libmsvcrt_a-msvcrt.o -MD -MP -MF crt/$(DEPDIR)/lib64_libmsvcrt_a-msvcrt.Tpo -c -o crt/lib64_libmsvcrt_a-msvcrt.o `test -f 'crt/msvcrt.c' || echo '$(srcdir)/'`crt/msvcrt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crt/$(DEPDIR)/lib64_libmsvcrt_a-msvcrt.Tpo crt/$(DEPDIR)/lib64_libmsvcrt_a-msvcrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crt/msvcrt.c' object='crt/lib64_libmsvcrt_a-msvcrt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crt/lib64_libmsvcrt_a-msvcrt.o `test -f 'crt/msvcrt.c' || echo '$(srcdir)/'`crt/msvcrt.c + +crt/lib64_libmsvcrt_a-msvcrt.obj: crt/msvcrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crt/lib64_libmsvcrt_a-msvcrt.obj -MD -MP -MF crt/$(DEPDIR)/lib64_libmsvcrt_a-msvcrt.Tpo -c -o crt/lib64_libmsvcrt_a-msvcrt.obj `if test -f 'crt/msvcrt.c'; then $(CYGPATH_W) 'crt/msvcrt.c'; else $(CYGPATH_W) '$(srcdir)/crt/msvcrt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) crt/$(DEPDIR)/lib64_libmsvcrt_a-msvcrt.Tpo crt/$(DEPDIR)/lib64_libmsvcrt_a-msvcrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='crt/msvcrt.c' object='crt/lib64_libmsvcrt_a-msvcrt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crt/lib64_libmsvcrt_a-msvcrt.obj `if test -f 'crt/msvcrt.c'; then $(CYGPATH_W) 'crt/msvcrt.c'; else $(CYGPATH_W) '$(srcdir)/crt/msvcrt.c'; fi` + misc/lib64_libmsvcrt_a-invalid_parameter_handler.o: misc/invalid_parameter_handler.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib64_libmsvcrt_a-invalid_parameter_handler.o -MD -MP -MF misc/$(DEPDIR)/lib64_libmsvcrt_a-invalid_parameter_handler.Tpo -c -o misc/lib64_libmsvcrt_a-invalid_parameter_handler.o `test -f 'misc/invalid_parameter_handler.c' || echo '$(srcdir)/'`misc/invalid_parameter_handler.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) misc/$(DEPDIR)/lib64_libmsvcrt_a-invalid_parameter_handler.Tpo misc/$(DEPDIR)/lib64_libmsvcrt_a-invalid_parameter_handler.Po
diff --git a/mingw-w64-crt/crt/msvcrt.c b/mingw-w64-crt/crt/msvcrt.c new file mode 100644 index 0000000..a27e3c1 --- /dev/null +++ b/mingw-w64-crt/crt/msvcrt.c
@@ -0,0 +1,12 @@ +#include <windows.h> + +HMODULE __mingw_get_msvcrt_handle(void); +HMODULE __mingw_get_msvcrt_handle(void) +{ + static HANDLE msvcrt_handle; + + if(!msvcrt_handle) + msvcrt_handle = LoadLibraryW(L"msvcrt.dll"); + + return msvcrt_handle; +}
diff --git a/mingw-w64-crt/crt/pesect.c b/mingw-w64-crt/crt/pesect.c index 1a1d5ff..28c34f8 100644 --- a/mingw-w64-crt/crt/pesect.c +++ b/mingw-w64-crt/crt/pesect.c
@@ -228,31 +228,3 @@ return NULL; } - -HMODULE __mingw_get_msvcrt_handle(void); -HMODULE __mingw_get_msvcrt_handle(void) -{ - static HANDLE msvcrt_handle; - - if(!msvcrt_handle) { - const char *lib_name; - int i = 0; - - while ((lib_name = __mingw_enum_import_library_names (i++))) { - if((lib_name[0] == 'm' || lib_name[0] == 'M') - && (lib_name[1] == 's' || lib_name[1] == 'S') - && (lib_name[2] == 'v' || lib_name[2] == 'V') - && (lib_name[3] == 'c' || lib_name[3] == 'C') - && (lib_name[4] == 'r' || lib_name[4] == 'R') - && (lib_name[5] == 't' || lib_name[5] == 'T' || ('0' <= lib_name[5] && lib_name[5] <= '9'))) - break; - } - - if(lib_name) - msvcrt_handle = GetModuleHandleA(lib_name); - if(!msvcrt_handle) - msvcrt_handle = LoadLibraryW(L"msvcrt.dll"); - } - - return msvcrt_handle; -}