|
|
@@ -786,11 +786,29 @@ bool fs_validate_filename(const std::string & filename, bool allow_subdirs) {
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
+#ifdef _WIN32
|
|
|
+static std::wstring utf8_to_wstring(const std::string & str) {
|
|
|
+ if (str.empty()) {
|
|
|
+ return std::wstring();
|
|
|
+ }
|
|
|
+
|
|
|
+ int size = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), (int)str.size(), NULL, 0);
|
|
|
+
|
|
|
+ if (size <= 0) {
|
|
|
+ return std::wstring();
|
|
|
+ }
|
|
|
+
|
|
|
+ std::wstring wstr(size, 0);
|
|
|
+ MultiByteToWideChar(CP_UTF8, 0, str.c_str(), (int)str.size(), &wstr[0], size);
|
|
|
+
|
|
|
+ return wstr;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
// returns true if successful, false otherwise
|
|
|
bool fs_create_directory_with_parents(const std::string & path) {
|
|
|
#ifdef _WIN32
|
|
|
- std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
|
|
|
- std::wstring wpath = converter.from_bytes(path);
|
|
|
+ std::wstring wpath = utf8_to_wstring(path);
|
|
|
|
|
|
// if the path already exists, check whether it's a directory
|
|
|
const DWORD attributes = GetFileAttributesW(wpath.c_str());
|