aboutsummaryrefslogtreecommitdiff
path: root/src/fs.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2018-09-13 17:30:23 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2018-09-13 17:30:27 +0200
commitd73205ef3652e1ea58d9b90f3f397fdf2e6bd9fd (patch)
tree16ccdb4e8e05672b35ac556bef38c3cf6f935031 /src/fs.cpp
parent49fd485bbf5b140e23b538c7c9355e33d7193b48 (diff)
parente2213689328f8ba42af1d32d12c7b78a71f1ddc7 (diff)
downloadbitcoin-d73205ef3652e1ea58d9b90f3f397fdf2e6bd9fd.tar.xz
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: ![default](https://user-images.githubusercontent.com/11154118/45318798-8d83f480-b570-11e8-8cbb-c729a54f6b9e.png) After: ![2](https://user-images.githubusercontent.com/11154118/45318806-91177b80-b570-11e8-9474-a62342c92dbd.png) Tree-SHA512: 0a598bd159286f6784d117b8a24888b2650d5402d687ab0e8d0849e0c3d53797e266647d8177bb6614307c9598019cd7477311bb9895b1bb52a6bd77b460fda1
Diffstat (limited to 'src/fs.cpp')
-rw-r--r--src/fs.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/fs.cpp b/src/fs.cpp
index a34a88216a..df79b5e3df 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