Remove ___lc_codepage_func dependency in mingwex git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/branches/releases/v1.0@4350 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index 8265e4b..fe1443d 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am
@@ -183,6 +183,7 @@ math/truncl.c \ \ misc/mb_wc_common.h \ + misc/mingw_get_codepage.c \ misc/mingw_getsp.S \ misc/alarm.c misc/basename.c misc/btowc.c misc/_ctime32.c misc/ctime.c \ misc/delay-f.c misc/delayimp.c misc/delay-n.c misc/difftime32.c misc/difftime64.c \
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in index 4d360c3..10b19ed 100644 --- a/mingw-w64-crt/Makefile.in +++ b/mingw-w64-crt/Makefile.in
@@ -318,17 +318,17 @@ math/sinhf.c math/sinhl.c math/sqrtf.c math/sqrtl.c \ math/tanf.c math/tanhf.c math/tanhl.c math/tgamma.c \ math/tgammaf.c math/tgammal.c math/trunc.c math/truncf.c \ - math/truncl.c misc/mb_wc_common.h misc/mingw_getsp.S \ - misc/alarm.c misc/basename.c misc/btowc.c misc/_ctime32.c \ - misc/ctime.c misc/delay-f.c misc/delayimp.c misc/delay-n.c \ - misc/difftime32.c misc/difftime64.c misc/difftime.c \ - misc/dirent.c misc/dirname.c misc/execv.c misc/execve.c \ - misc/execvp.c misc/execvpe.c misc/feclearexcept.c \ - misc/fegetenv.c misc/fegetexceptflag.c misc/fegetround.c \ - misc/feholdexcept.c misc/feraiseexcept.c misc/fesetenv.c \ - misc/fesetexceptflag.c misc/fesetround.c misc/fetestexcept.c \ - misc/feupdateenv.c misc/ftruncate.c misc/fwide.c \ - misc/getlogin.c misc/getopt.c misc/gettimeofday.c \ + math/truncl.c misc/mb_wc_common.h misc/mingw_get_codepage.c \ + misc/mingw_getsp.S misc/alarm.c misc/basename.c misc/btowc.c \ + misc/_ctime32.c misc/ctime.c misc/delay-f.c misc/delayimp.c \ + misc/delay-n.c misc/difftime32.c misc/difftime64.c \ + misc/difftime.c misc/dirent.c misc/dirname.c misc/execv.c \ + misc/execve.c misc/execvp.c misc/execvpe.c \ + misc/feclearexcept.c misc/fegetenv.c misc/fegetexceptflag.c \ + misc/fegetround.c misc/feholdexcept.c misc/feraiseexcept.c \ + misc/fesetenv.c misc/fesetexceptflag.c misc/fesetround.c \ + misc/fetestexcept.c misc/feupdateenv.c misc/ftruncate.c \ + misc/fwide.c misc/getlogin.c misc/getopt.c misc/gettimeofday.c \ misc/_gmtime32.c misc/gmtime.c misc/imaxabs.c misc/imaxdiv.c \ misc/isblank.c misc/iswblank.c misc/_localtime32.c \ misc/localtime.c misc/mbrtowc.c misc/mbsinit.c \ @@ -667,6 +667,7 @@ math/lib32_libmingwex_a-trunc.$(OBJEXT) \ math/lib32_libmingwex_a-truncf.$(OBJEXT) \ math/lib32_libmingwex_a-truncl.$(OBJEXT) \ + misc/lib32_libmingwex_a-mingw_get_codepage.$(OBJEXT) \ misc/lib32_libmingwex_a-mingw_getsp.$(OBJEXT) \ misc/lib32_libmingwex_a-alarm.$(OBJEXT) \ misc/lib32_libmingwex_a-basename.$(OBJEXT) \ @@ -1226,17 +1227,17 @@ math/sinhf.c math/sinhl.c math/sqrtf.c math/sqrtl.c \ math/tanf.c math/tanhf.c math/tanhl.c math/tgamma.c \ math/tgammaf.c math/tgammal.c math/trunc.c math/truncf.c \ - math/truncl.c misc/mb_wc_common.h misc/mingw_getsp.S \ - misc/alarm.c misc/basename.c misc/btowc.c misc/_ctime32.c \ - misc/ctime.c misc/delay-f.c misc/delayimp.c misc/delay-n.c \ - misc/difftime32.c misc/difftime64.c misc/difftime.c \ - misc/dirent.c misc/dirname.c misc/execv.c misc/execve.c \ - misc/execvp.c misc/execvpe.c misc/feclearexcept.c \ - misc/fegetenv.c misc/fegetexceptflag.c misc/fegetround.c \ - misc/feholdexcept.c misc/feraiseexcept.c misc/fesetenv.c \ - misc/fesetexceptflag.c misc/fesetround.c misc/fetestexcept.c \ - misc/feupdateenv.c misc/ftruncate.c misc/fwide.c \ - misc/getlogin.c misc/getopt.c misc/gettimeofday.c \ + math/truncl.c misc/mb_wc_common.h misc/mingw_get_codepage.c \ + misc/mingw_getsp.S misc/alarm.c misc/basename.c misc/btowc.c \ + misc/_ctime32.c misc/ctime.c misc/delay-f.c misc/delayimp.c \ + misc/delay-n.c misc/difftime32.c misc/difftime64.c \ + misc/difftime.c misc/dirent.c misc/dirname.c misc/execv.c \ + misc/execve.c misc/execvp.c misc/execvpe.c \ + misc/feclearexcept.c misc/fegetenv.c misc/fegetexceptflag.c \ + misc/fegetround.c misc/feholdexcept.c misc/feraiseexcept.c \ + misc/fesetenv.c misc/fesetexceptflag.c misc/fesetround.c \ + misc/fetestexcept.c misc/feupdateenv.c misc/ftruncate.c \ + misc/fwide.c misc/getlogin.c misc/getopt.c misc/gettimeofday.c \ misc/_gmtime32.c misc/gmtime.c misc/imaxabs.c misc/imaxdiv.c \ misc/isblank.c misc/iswblank.c misc/_localtime32.c \ misc/localtime.c misc/mbrtowc.c misc/mbsinit.c \ @@ -1582,6 +1583,7 @@ math/lib64_libmingwex_a-trunc.$(OBJEXT) \ math/lib64_libmingwex_a-truncf.$(OBJEXT) \ math/lib64_libmingwex_a-truncl.$(OBJEXT) \ + misc/lib64_libmingwex_a-mingw_get_codepage.$(OBJEXT) \ misc/lib64_libmingwex_a-mingw_getsp.$(OBJEXT) \ misc/lib64_libmingwex_a-alarm.$(OBJEXT) \ misc/lib64_libmingwex_a-basename.$(OBJEXT) \ @@ -2411,6 +2413,7 @@ math/truncl.c \ \ misc/mb_wc_common.h \ + misc/mingw_get_codepage.c \ misc/mingw_getsp.S \ misc/alarm.c misc/basename.c misc/btowc.c misc/_ctime32.c misc/ctime.c \ misc/delay-f.c misc/delayimp.c misc/delay-n.c misc/difftime32.c misc/difftime64.c \ @@ -3894,6 +3897,8 @@ misc/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) misc/$(DEPDIR) @: > misc/$(DEPDIR)/$(am__dirstamp) +misc/lib32_libmingwex_a-mingw_get_codepage.$(OBJEXT): \ + misc/$(am__dirstamp) misc/$(DEPDIR)/$(am__dirstamp) misc/lib32_libmingwex_a-mingw_getsp.$(OBJEXT): misc/$(am__dirstamp) \ misc/$(DEPDIR)/$(am__dirstamp) misc/lib32_libmingwex_a-alarm.$(OBJEXT): misc/$(am__dirstamp) \ @@ -5231,6 +5236,8 @@ math/$(DEPDIR)/$(am__dirstamp) math/lib64_libmingwex_a-truncl.$(OBJEXT): math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) +misc/lib64_libmingwex_a-mingw_get_codepage.$(OBJEXT): \ + misc/$(am__dirstamp) misc/$(DEPDIR)/$(am__dirstamp) misc/lib64_libmingwex_a-mingw_getsp.$(OBJEXT): misc/$(am__dirstamp) \ misc/$(DEPDIR)/$(am__dirstamp) misc/lib64_libmingwex_a-alarm.$(OBJEXT): misc/$(am__dirstamp) \ @@ -6957,6 +6964,7 @@ -rm -f misc/lib32_libmingwex_a-mbsinit.$(OBJEXT) -rm -f misc/lib32_libmingwex_a-mingw-aligned-malloc.$(OBJEXT) -rm -f misc/lib32_libmingwex_a-mingw-fseek.$(OBJEXT) + -rm -f misc/lib32_libmingwex_a-mingw_get_codepage.$(OBJEXT) -rm -f misc/lib32_libmingwex_a-mingw_getsp.$(OBJEXT) -rm -f misc/lib32_libmingwex_a-mingw_output_format.$(OBJEXT) -rm -f misc/lib32_libmingwex_a-mingw_usleep.$(OBJEXT) @@ -7045,6 +7053,7 @@ -rm -f misc/lib64_libmingwex_a-mbsinit.$(OBJEXT) -rm -f misc/lib64_libmingwex_a-mingw-aligned-malloc.$(OBJEXT) -rm -f misc/lib64_libmingwex_a-mingw-fseek.$(OBJEXT) + -rm -f misc/lib64_libmingwex_a-mingw_get_codepage.$(OBJEXT) -rm -f misc/lib64_libmingwex_a-mingw_getsp.$(OBJEXT) -rm -f misc/lib64_libmingwex_a-mingw_output_format.$(OBJEXT) -rm -f misc/lib64_libmingwex_a-mingw_usleep.$(OBJEXT) @@ -8202,6 +8211,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mbsinit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw-aligned-malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw-fseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw_get_codepage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw_getsp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw_output_format.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw_usleep.Po@am__quote@ @@ -8290,6 +8300,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mbsinit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw-aligned-malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw-fseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw_get_codepage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw_getsp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw_output_format.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw_usleep.Po@am__quote@ @@ -13908,6 +13919,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o math/lib32_libmingwex_a-truncl.obj `if test -f 'math/truncl.c'; then $(CYGPATH_W) 'math/truncl.c'; else $(CYGPATH_W) '$(srcdir)/math/truncl.c'; fi` +misc/lib32_libmingwex_a-mingw_get_codepage.o: misc/mingw_get_codepage.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib32_libmingwex_a-mingw_get_codepage.o -MD -MP -MF misc/$(DEPDIR)/lib32_libmingwex_a-mingw_get_codepage.Tpo -c -o misc/lib32_libmingwex_a-mingw_get_codepage.o `test -f 'misc/mingw_get_codepage.c' || echo '$(srcdir)/'`misc/mingw_get_codepage.c +@am__fastdepCC_TRUE@ $(am__mv) misc/$(DEPDIR)/lib32_libmingwex_a-mingw_get_codepage.Tpo misc/$(DEPDIR)/lib32_libmingwex_a-mingw_get_codepage.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc/mingw_get_codepage.c' object='misc/lib32_libmingwex_a-mingw_get_codepage.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o misc/lib32_libmingwex_a-mingw_get_codepage.o `test -f 'misc/mingw_get_codepage.c' || echo '$(srcdir)/'`misc/mingw_get_codepage.c + +misc/lib32_libmingwex_a-mingw_get_codepage.obj: misc/mingw_get_codepage.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib32_libmingwex_a-mingw_get_codepage.obj -MD -MP -MF misc/$(DEPDIR)/lib32_libmingwex_a-mingw_get_codepage.Tpo -c -o misc/lib32_libmingwex_a-mingw_get_codepage.obj `if test -f 'misc/mingw_get_codepage.c'; then $(CYGPATH_W) 'misc/mingw_get_codepage.c'; else $(CYGPATH_W) '$(srcdir)/misc/mingw_get_codepage.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) misc/$(DEPDIR)/lib32_libmingwex_a-mingw_get_codepage.Tpo misc/$(DEPDIR)/lib32_libmingwex_a-mingw_get_codepage.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc/mingw_get_codepage.c' object='misc/lib32_libmingwex_a-mingw_get_codepage.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o misc/lib32_libmingwex_a-mingw_get_codepage.obj `if test -f 'misc/mingw_get_codepage.c'; then $(CYGPATH_W) 'misc/mingw_get_codepage.c'; else $(CYGPATH_W) '$(srcdir)/misc/mingw_get_codepage.c'; fi` + misc/lib32_libmingwex_a-alarm.o: misc/alarm.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib32_libmingwex_a-alarm.o -MD -MP -MF misc/$(DEPDIR)/lib32_libmingwex_a-alarm.Tpo -c -o misc/lib32_libmingwex_a-alarm.o `test -f 'misc/alarm.c' || echo '$(srcdir)/'`misc/alarm.c @am__fastdepCC_TRUE@ $(am__mv) misc/$(DEPDIR)/lib32_libmingwex_a-alarm.Tpo misc/$(DEPDIR)/lib32_libmingwex_a-alarm.Po @@ -21804,6 +21829,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o math/lib64_libmingwex_a-truncl.obj `if test -f 'math/truncl.c'; then $(CYGPATH_W) 'math/truncl.c'; else $(CYGPATH_W) '$(srcdir)/math/truncl.c'; fi` +misc/lib64_libmingwex_a-mingw_get_codepage.o: misc/mingw_get_codepage.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib64_libmingwex_a-mingw_get_codepage.o -MD -MP -MF misc/$(DEPDIR)/lib64_libmingwex_a-mingw_get_codepage.Tpo -c -o misc/lib64_libmingwex_a-mingw_get_codepage.o `test -f 'misc/mingw_get_codepage.c' || echo '$(srcdir)/'`misc/mingw_get_codepage.c +@am__fastdepCC_TRUE@ $(am__mv) misc/$(DEPDIR)/lib64_libmingwex_a-mingw_get_codepage.Tpo misc/$(DEPDIR)/lib64_libmingwex_a-mingw_get_codepage.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc/mingw_get_codepage.c' object='misc/lib64_libmingwex_a-mingw_get_codepage.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o misc/lib64_libmingwex_a-mingw_get_codepage.o `test -f 'misc/mingw_get_codepage.c' || echo '$(srcdir)/'`misc/mingw_get_codepage.c + +misc/lib64_libmingwex_a-mingw_get_codepage.obj: misc/mingw_get_codepage.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib64_libmingwex_a-mingw_get_codepage.obj -MD -MP -MF misc/$(DEPDIR)/lib64_libmingwex_a-mingw_get_codepage.Tpo -c -o misc/lib64_libmingwex_a-mingw_get_codepage.obj `if test -f 'misc/mingw_get_codepage.c'; then $(CYGPATH_W) 'misc/mingw_get_codepage.c'; else $(CYGPATH_W) '$(srcdir)/misc/mingw_get_codepage.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) misc/$(DEPDIR)/lib64_libmingwex_a-mingw_get_codepage.Tpo misc/$(DEPDIR)/lib64_libmingwex_a-mingw_get_codepage.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='misc/mingw_get_codepage.c' object='misc/lib64_libmingwex_a-mingw_get_codepage.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o misc/lib64_libmingwex_a-mingw_get_codepage.obj `if test -f 'misc/mingw_get_codepage.c'; then $(CYGPATH_W) 'misc/mingw_get_codepage.c'; else $(CYGPATH_W) '$(srcdir)/misc/mingw_get_codepage.c'; fi` + misc/lib64_libmingwex_a-alarm.o: misc/alarm.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib64_libmingwex_a-alarm.o -MD -MP -MF misc/$(DEPDIR)/lib64_libmingwex_a-alarm.Tpo -c -o misc/lib64_libmingwex_a-alarm.o `test -f 'misc/alarm.c' || echo '$(srcdir)/'`misc/alarm.c @am__fastdepCC_TRUE@ $(am__mv) misc/$(DEPDIR)/lib64_libmingwex_a-alarm.Tpo misc/$(DEPDIR)/lib64_libmingwex_a-alarm.Po
diff --git a/mingw-w64-crt/crt/crtexe.c b/mingw-w64-crt/crt/crtexe.c index bf586a3..05726a2 100644 --- a/mingw-w64-crt/crt/crtexe.c +++ b/mingw-w64-crt/crt/crtexe.c
@@ -491,21 +491,14 @@ #endif } +HANDLE __mingw_get_msvcrt_handle(void); + static void __cdecl __mingw_prepare_except_for_msvcr80_and_higher (void) { _invalid_parameter_handler (*fIPH)(_invalid_parameter_handler) = NULL; - HMODULE hmsv = GetModuleHandleA ("msvcr80.dll"); - if(!hmsv) - hmsv = GetModuleHandleA ("msvcr70.dll"); - if (!hmsv) - hmsv = GetModuleHandleA ("msvcrt.dll"); - if (!hmsv) - hmsv = LoadLibraryA ("msvcrt.dll"); - if (!hmsv) - return; - fIPH = (_invalid_parameter_handler (*)(_invalid_parameter_handler)) - GetProcAddress (hmsv, "_set_invalid_parameter_handler"); + + fIPH = (void*)GetProcAddress (__mingw_get_msvcrt_handle(), "_set_invalid_parameter_handler"); if (fIPH) (*fIPH)(__mingw_invalidParameterHandler); }
diff --git a/mingw-w64-crt/crt/pesect.c b/mingw-w64-crt/crt/pesect.c index 8b83371..12478c8 100644 --- a/mingw-w64-crt/crt/pesect.c +++ b/mingw-w64-crt/crt/pesect.c
@@ -182,3 +182,75 @@ return FALSE; return (pSection->Characteristics & IMAGE_SCN_MEM_WRITE) == 0; } + +const char * +__mingw_enum_import_library_names (int); + +const char * +__mingw_enum_import_library_names (int i) +{ + PBYTE pImageBase; + PIMAGE_NT_HEADERS pNTHeader; + PIMAGE_IMPORT_DESCRIPTOR importDesc; + PIMAGE_SECTION_HEADER pSection; + DWORD importsStartRVA; + + pImageBase = (PBYTE) &__ImageBase; + if (! _ValidateImageBase (pImageBase)) + return NULL; + + pNTHeader = (PIMAGE_NT_HEADERS) (pImageBase + ((PIMAGE_DOS_HEADER) pImageBase)->e_lfanew); + + importsStartRVA = pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; + if (!importsStartRVA) + return NULL; + + pSection = _FindPESection (pImageBase, importsStartRVA); + if (!pSection) + return NULL; + + importDesc = (PIMAGE_IMPORT_DESCRIPTOR) (pImageBase + importsStartRVA); + if (!importDesc) + return NULL; + + for (;;) + { + if (importDesc->TimeDateStamp == 0 && importDesc->Name == 0) + break; + + if (i <= 0) + return (char *) (pImageBase + importDesc->Name); + --i; + importDesc++; + } + + 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; +}
diff --git a/mingw-w64-crt/misc/btowc.c b/mingw-w64-crt/misc/btowc.c index 02db9f2..9535066 100644 --- a/mingw-w64-crt/misc/btowc.c +++ b/mingw-w64-crt/misc/btowc.c
@@ -19,7 +19,7 @@ { unsigned char ch = c; wchar_t wc = WEOF; - MultiByteToWideChar (get_codepage(), MB_ERR_INVALID_CHARS, + MultiByteToWideChar (__mingw_get_codepage(), MB_ERR_INVALID_CHARS, (char*)&ch, 1, &wc, 1); return wc; }
diff --git a/mingw-w64-crt/misc/mb_wc_common.h b/mingw-w64-crt/misc/mb_wc_common.h index 50794ea..bbdb969 100644 --- a/mingw-w64-crt/misc/mb_wc_common.h +++ b/mingw-w64-crt/misc/mb_wc_common.h
@@ -5,10 +5,5 @@ */ #include <_mingw.h> -_CRTIMP unsigned int ___lc_codepage_func(void); -static inline -unsigned int get_codepage (void) -{ - return ___lc_codepage_func(); -} +extern unsigned int (__cdecl *__mingw_get_codepage)(void);
diff --git a/mingw-w64-crt/misc/mbrtowc.c b/mingw-w64-crt/misc/mbrtowc.c index a6c6a43..58e9b2e 100644 --- a/mingw-w64-crt/misc/mbrtowc.c +++ b/mingw-w64-crt/misc/mbrtowc.c
@@ -101,7 +101,7 @@ wchar_t* dst = pwc ? pwc : &byte_bucket; return (size_t) __mbrtowc_cp (dst, s, n, ps ? ps : &internal_mbstate, - get_codepage(), MB_CUR_MAX); + __mingw_get_codepage(), MB_CUR_MAX); } @@ -113,7 +113,7 @@ size_t n = 0; static mbstate_t internal_mbstate = 0; mbstate_t* internal_ps = ps ? ps : &internal_mbstate; - const unsigned int cp = get_codepage(); + const unsigned int cp = __mingw_get_codepage(); const unsigned int mb_max = MB_CUR_MAX; if ( src == NULL || *src == NULL ) /* undefined behavior */ @@ -157,5 +157,5 @@ static mbstate_t s_mbstate = 0; wchar_t byte_bucket = 0; return __mbrtowc_cp (&byte_bucket, s, n, (ps) ? ps : &s_mbstate, - get_codepage(), MB_CUR_MAX); + __mingw_get_codepage(), MB_CUR_MAX); }
diff --git a/mingw-w64-crt/misc/mingw_output_format.c b/mingw-w64-crt/misc/mingw_output_format.c index 6c69e34..a04d86e 100644 --- a/mingw-w64-crt/misc/mingw_output_format.c +++ b/mingw-w64-crt/misc/mingw_output_format.c
@@ -1,6 +1,8 @@ #include <windows.h> #include <stdio.h> +HANDLE __mingw_get_msvcrt_handle(void); + static unsigned int last_value = 0; typedef unsigned int (*f_get_output_format)(void); typedef unsigned int (*f_set_output_format)(unsigned int); @@ -8,15 +10,11 @@ static int call_set_output_format(unsigned int _Format) { f_set_output_format sof; - HMODULE lib = LoadLibrary ("msvcrt.dll"); - if (!lib) - return 0; - sof = (f_set_output_format) GetProcAddress (lib, "_set_output_format"); + sof = (f_set_output_format) GetProcAddress (__mingw_get_msvcrt_handle(), "_set_output_format"); if (sof) { last_value = (*sof)(_Format); } - FreeLibrary(lib); if (!sof) return 0; return 1; } @@ -24,15 +22,11 @@ static int call_get_output_format(void) { f_get_output_format sof; - HMODULE lib = LoadLibrary ("msvcrt.dll"); - if (!lib) - return 0; - sof = (f_get_output_format) GetProcAddress (lib, "_get_output_format"); + sof = (f_get_output_format) GetProcAddress (__mingw_get_msvcrt_handle(), "_get_output_format"); if (sof) { last_value = (*sof)(); } - FreeLibrary(lib); if (!sof) return 0; return 1; }
diff --git a/mingw-w64-crt/misc/wcrtomb.c b/mingw-w64-crt/misc/wcrtomb.c index e7d6fcd..e30baa0 100644 --- a/mingw-w64-crt/misc/wcrtomb.c +++ b/mingw-w64-crt/misc/wcrtomb.c
@@ -49,7 +49,7 @@ { char byte_bucket [MB_LEN_MAX]; char* tmp_dst = dst ? dst : byte_bucket; - return (size_t)__wcrtomb_cp (tmp_dst, wc, get_codepage (), + return (size_t)__wcrtomb_cp (tmp_dst, wc, __mingw_get_codepage (), MB_CUR_MAX); } @@ -58,7 +58,7 @@ { int ret = 0; size_t n = 0; - const unsigned int cp = get_codepage(); + const unsigned int cp = __mingw_get_codepage(); const unsigned int mb_max = MB_CUR_MAX; const wchar_t *pwc;
diff --git a/mingw-w64-crt/misc/wcstold.c b/mingw-w64-crt/misc/wcstold.c index 41d861f..79ec948 100644 --- a/mingw-w64-crt/misc/wcstold.c +++ b/mingw-w64-crt/misc/wcstold.c
@@ -20,25 +20,12 @@ #include <wchar.h> #include <stdlib.h> #include <string.h> +#include "mb_wc_common.h" extern int __asctoe64(const char * __restrict__ ss, short unsigned int * __restrict__ y); -static __inline__ unsigned int get_codepage (void) -{ - char* cp; - - /* - locale :: "lang[_country[.code_page]]" - | ".code_page" - */ - if ((cp = strchr(setlocale(LC_CTYPE, NULL), '.'))) - return atoi( cp + 1); - else - return 0; -} - long double wcstold (const wchar_t * __restrict__ wcs, wchar_t ** __restrict__ wcse) { char * cs; @@ -50,7 +37,7 @@ long double ld; } xx; - unsigned int cp = get_codepage (); + unsigned int cp = __mingw_get_codepage(); /* Allocate enough room for (possibly) mb chars */ cs = (char *) malloc ((wcslen(wcs)+1) * MB_CUR_MAX);
diff --git a/mingw-w64-crt/misc/wctob.c b/mingw-w64-crt/misc/wctob.c index 22362ba..2f548fc 100644 --- a/mingw-w64-crt/misc/wctob.c +++ b/mingw-w64-crt/misc/wctob.c
@@ -19,7 +19,7 @@ wchar_t w = wc; char c; int invalid_char = 0; - if (!WideCharToMultiByte (get_codepage(), + if (!WideCharToMultiByte (__mingw_get_codepage(), 0 /* Is this correct flag? */, &w, 1, &c, 1, NULL, &invalid_char) || invalid_char)