| From bb752566a31029df4ca2c8a2d7fca6680570bfe6 Mon Sep 17 00:00:00 2001 |
| From: phunkyfish <phunkyfish@gmail.com> |
| Date: Thu, 8 Oct 2020 16:10:44 +0100 |
| Subject: [PATCH] Remove charset converter dependency |
| |
| Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> |
| --- |
| 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 <string> |
| #include "../utils.h" |
| #ifdef TARGET_WINDOWS_DESKTOP |
| #include <Shlobj.h> |
| #endif |
| |
| -#ifdef TARGET_WINDOWS |
| #include <windows.h> |
| #include <fileapi.h> |
| -#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<wchar_t[]>(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) |