Changeset View
Changeset View
Standalone View
Standalone View
src/fs.cpp
Show First 20 Lines • Show All 90 Lines • ▼ Show 20 Lines | if (!LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY, | ||||
0, 0, 0, &overlapped)) { | 0, 0, 0, &overlapped)) { | ||||
reason = GetErrorReason(); | reason = GetErrorReason(); | ||||
return false; | return false; | ||||
} | } | ||||
return true; | return true; | ||||
} | } | ||||
#endif | #endif | ||||
std::string get_filesystem_error_message(const fs::filesystem_error &e) { | |||||
#ifndef WIN32 | |||||
return e.what(); | |||||
#else | |||||
// Convert from Multi Byte to utf-16 | |||||
std::string mb_string(e.what()); | |||||
int size = MultiByteToWideChar(CP_ACP, 0, mb_string.c_str(), | |||||
mb_string.size(), nullptr, 0); | |||||
std::wstring utf16_string(size, L'\0'); | |||||
MultiByteToWideChar(CP_ACP, 0, mb_string.c_str(), mb_string.size(), | |||||
&*utf16_string.begin(), size); | |||||
// Convert from utf-16 to utf-8 | |||||
return std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t>() | |||||
.to_bytes(utf16_string); | |||||
#endif | |||||
} | |||||
} // namespace fsbridge | } // namespace fsbridge |