diff --git a/src/misc/util.c b/src/misc/util.c index 6801eb860..a4c14ddf3 100644 --- a/src/misc/util.c +++ b/src/misc/util.c @@ -257,3 +257,25 @@ ngdirname(const char *name) } #endif + +#ifndef EXT_ASC +#if defined(__MINGW__) || defined(_MSC_VER) +#undef BOOLEAN +#include +FILE * +newfopen(char *fn, char* md) +{ + wchar_t wfn[BSIZE_SP]; + wchar_t wmd[16]; + MultiByteToWideChar(CP_UTF8, 0, md, -1, wmd, 15); + MultiByteToWideChar(CP_UTF8, 0, fn, -1, wfn, BSIZE_SP - 1); + if (MultiByteToWideChar(CP_UTF8, 0, fn, -1, wfn, BSIZE_SP - 1) == 0) { + fprintf(stderr, "UTF-8 to UTF-16 conversion failed with 0x%x\n", GetLastError()); + fprintf(stderr, "%s could not be converted\n", fn); + return NULL; + } + return _wfopen(wfn, wmd); +} +#endif +#endif +