From bb752566a31029df4ca2c8a2d7fca6680570bfe6 Mon Sep 17 00:00:00 2001 From: phunkyfish Date: Thu, 8 Oct 2020 16:10:44 +0100 Subject: [PATCH] Remove charset converter dependency Signed-off-by: Bernd Kuhls --- src/windows/FileUtils.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/windows/FileUtils.cpp b/src/windows/FileUtils.cpp index 0c8a03e..f829b2a 100644 --- a/src/windows/FileUtils.cpp +++ b/src/windows/FileUtils.cpp @@ -6,24 +6,36 @@ */ #include "../FileUtils.h" -#include "p8-platform/windows/CharsetConverter.h" #include #include "../utils.h" #ifdef TARGET_WINDOWS_DESKTOP #include #endif -#ifdef TARGET_WINDOWS #include #include -#endif + +std::wstring ToW(const char* str, size_t length) +{ + int result = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, length, nullptr, 0); + if (result == 0) + return std::wstring(); + + auto newStr = std::make_unique(result); + result = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, length, newStr.get(), result); + + if (result == 0) + return std::wstring(); + + return std::wstring(newStr.get(), result); +} namespace OS { bool CFile::Exists(const std::string& strFileName, long* errCode) { std::string strWinFile = ToWindowsPath(strFileName); - std::wstring strWFile = p8::windows::ToW(strWinFile.c_str()); + std::wstring strWFile = ToW(strWinFile.c_str(), 0); DWORD dwAttr = GetFileAttributesW(strWFile.c_str()); if(dwAttr != 0xffffffff)