utils: Use _wfopen and _wreopen on Windows

The fopen function does not support unicode filename on Windows, so use Windows specific function do deal with it
This commit is contained in:
Chun Kuan Lee 2018-07-26 21:39:13 +08:00
parent bdbd654df8
commit b9babc82dd

View file

@ -11,7 +11,12 @@ namespace fsbridge {
FILE *fopen(const fs::path& p, const char *mode) FILE *fopen(const fs::path& p, const char *mode)
{ {
#ifndef WIN32
return ::fopen(p.string().c_str(), mode); return ::fopen(p.string().c_str(), mode);
#else
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>,wchar_t> utf8_cvt;
return ::_wfopen(p.wstring().c_str(), utf8_cvt.from_bytes(mode).c_str());
#endif
} }
#ifndef WIN32 #ifndef WIN32