diff options
| author | Wladimir J. van der Laan <[email protected]> | 2018-09-13 17:30:23 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2018-09-13 17:30:27 +0200 |
| commit | d73205ef3652e1ea58d9b90f3f397fdf2e6bd9fd (patch) | |
| tree | 16ccdb4e8e05672b35ac556bef38c3cf6f935031 /src/fs.cpp | |
| parent | Merge #14208: [build] Actually remove ENABLE_WALLET (diff) | |
| parent | utils: Convert fs error messages from multibyte to utf-8 (diff) | |
| download | discoin-d73205ef3652e1ea58d9b90f3f397fdf2e6bd9fd.tar.xz discoin-d73205ef3652e1ea58d9b90f3f397fdf2e6bd9fd.zip | |
Merge #14192: utils: Convert fs::filesystem_error messages from local multibyte to utf-8 on Windows
e2213689328f8ba42af1d32d12c7b78a71f1ddc7 utils: Convert fs error messages from multibyte to utf-8 (Chun Kuan Lee)
Pull request description:
Before:

After:

Tree-SHA512: 0a598bd159286f6784d117b8a24888b2650d5402d687ab0e8d0849e0c3d53797e266647d8177bb6614307c9598019cd7477311bb9895b1bb52a6bd77b460fda1
Diffstat (limited to 'src/fs.cpp')
| -rw-r--r-- | src/fs.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/fs.cpp b/src/fs.cpp index a34a88216..df79b5e3d 100644 --- a/src/fs.cpp +++ b/src/fs.cpp @@ -97,4 +97,20 @@ bool FileLock::TryLock() } #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 +} + } // fsbridge |