blob: 81f583c7f620db2e93f7032af40d6b6990c60b2b [file] [log] [blame]
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)