From e46aab17880503c866f515bd677f24951d165b31 Mon Sep 17 00:00:00 2001 From: h_vogt Date: Wed, 4 Oct 2017 14:20:51 +0200 Subject: [PATCH] function newfopen to replace fopen by reading wide char strings --- src/misc/util.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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 +