function newfopen to replace fopen
by reading wide char strings
This commit is contained in:
parent
59adfc1d68
commit
9f272ea8f6
|
|
@ -257,3 +257,25 @@ ngdirname(const char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#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