function newfopen to replace fopen
by reading wide char strings
This commit is contained in:
parent
904cc4a1bc
commit
e46aab1788
|
|
@ -257,3 +257,25 @@ ngdirname(const char *name)
|
|||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef EXT_ASC
|
||||
#if defined(__MINGW__) || defined(_MSC_VER)
|
||||
#undef BOOLEAN
|
||||
#include <windows.h>
|
||||
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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue