From 10301507a99bfdbdaec8127c9acc28b36b878b0d Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 8 Jan 2022 15:42:27 +0100 Subject: [PATCH] Fix Android --- src/openrct2-ui/input/ShortcutManager.cpp | 6 +++--- src/openrct2/Context.cpp | 2 +- src/openrct2/core/FileStream.cpp | 2 +- src/openrct2/core/FileSystem.hpp | 6 ++++++ src/openrct2/core/Path.cpp | 6 +++--- src/openrct2/interface/Screenshot.cpp | 2 +- src/openrct2/platform/Platform.Posix.cpp | 1 + src/openrct2/platform/Posix.cpp | 2 +- src/openrct2/platform/Shared.cpp | 2 +- src/openrct2/scenario/ScenarioRepository.cpp | 2 +- src/openrct2/scripting/bindings/game/ScContext.hpp | 2 +- 11 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/openrct2-ui/input/ShortcutManager.cpp b/src/openrct2-ui/input/ShortcutManager.cpp index b6d59fa0db..193d5585dd 100644 --- a/src/openrct2-ui/input/ShortcutManager.cpp +++ b/src/openrct2-ui/input/ShortcutManager.cpp @@ -194,7 +194,7 @@ void ShortcutManager::LoadUserBindings() { try { - auto path = fs::u8path(_env->GetFilePath(PATHID::CONFIG_SHORTCUTS)); + auto path = u8path(_env->GetFilePath(PATHID::CONFIG_SHORTCUTS)); if (fs::exists(path)) { LoadUserBindings(path); @@ -204,7 +204,7 @@ void ShortcutManager::LoadUserBindings() try { Console::WriteLine("Importing legacy shortcuts..."); - auto legacyPath = fs::u8path(_env->GetFilePath(PATHID::CONFIG_SHORTCUTS_LEGACY)); + auto legacyPath = u8path(_env->GetFilePath(PATHID::CONFIG_SHORTCUTS_LEGACY)); if (fs::exists(legacyPath)) { LoadLegacyBindings(legacyPath); @@ -315,7 +315,7 @@ void ShortcutManager::SaveUserBindings() { try { - auto path = fs::u8path(_env->GetFilePath(PATHID::CONFIG_SHORTCUTS)); + auto path = u8path(_env->GetFilePath(PATHID::CONFIG_SHORTCUTS)); SaveUserBindings(path); } catch (const std::exception& e) diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 7d310e3df1..4ff6f25219 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -583,7 +583,7 @@ namespace OpenRCT2 { if (String::Equals(Path::GetExtension(path), ".sea", true)) { - auto data = DecryptSea(fs::u8path(path)); + auto data = DecryptSea(u8path(path)); auto ms = MemoryStream(data.data(), data.size(), MEMORY_ACCESS::READ); if (!LoadParkFromStream(&ms, path, loadTitleScreenOnFail, asScenario)) { diff --git a/src/openrct2/core/FileStream.cpp b/src/openrct2/core/FileStream.cpp index b95b220fe5..ddae4a33de 100644 --- a/src/openrct2/core/FileStream.cpp +++ b/src/openrct2/core/FileStream.cpp @@ -110,7 +110,7 @@ namespace OpenRCT2 _fileSize = _filelengthi64(_fileno(_file)); #else std::error_code ec; - _fileSize = fs::file_size(fs::u8path(path), ec); + _fileSize = fs::file_size(u8path(path), ec); #endif _ownsFilePtr = true; diff --git a/src/openrct2/core/FileSystem.hpp b/src/openrct2/core/FileSystem.hpp index 8496a6cd09..3796fb72cc 100644 --- a/src/openrct2/core/FileSystem.hpp +++ b/src/openrct2/core/FileSystem.hpp @@ -57,3 +57,9 @@ namespace fs = ghc::filesystem; #endif #undef HAVE_STD_FILESYSTEM // Not needed any more, don't make it public. + +#ifdef __ANDROID__ +# define u8path(path) fs::u8path(std::string(path)) +#else +# define u8path(path) fs::u8path(path) +#endif diff --git a/src/openrct2/core/Path.cpp b/src/openrct2/core/Path.cpp index b4189d8c52..74cfd9b686 100644 --- a/src/openrct2/core/Path.cpp +++ b/src/openrct2/core/Path.cpp @@ -90,17 +90,17 @@ namespace Path std::string GetFileName(std::string_view path) { - return fs::u8path(path).filename().string(); + return u8path(path).filename().string(); } std::string GetFileNameWithoutExtension(std::string_view path) { - return fs::u8path(path).stem().string(); + return u8path(path).stem().string(); } std::string GetExtension(std::string_view path) { - return fs::u8path(path).extension().string(); + return u8path(path).extension().string(); } utf8* GetAbsolute(utf8* buffer, size_t bufferSize, const utf8* relativePath) diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index 0aa89605c3..104fea032f 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -769,7 +769,7 @@ static std::string ResolveFilenameForCapture(const fs::path& filename) return *path; } - auto screenshotDirectory = fs::u8path(screenshot_get_directory()); + auto screenshotDirectory = u8path(screenshot_get_directory()); auto screenshotPath = fs::absolute(screenshotDirectory / filename); // Check the filename isn't attempting to leave the screenshot directory for security diff --git a/src/openrct2/platform/Platform.Posix.cpp b/src/openrct2/platform/Platform.Posix.cpp index df2afbd4e2..3beb37b78c 100644 --- a/src/openrct2/platform/Platform.Posix.cpp +++ b/src/openrct2/platform/Platform.Posix.cpp @@ -16,6 +16,7 @@ # include "../core/String.hpp" # include "Platform2.h" +# include # include # include # include diff --git a/src/openrct2/platform/Posix.cpp b/src/openrct2/platform/Posix.cpp index a624302fc9..a4fee089c2 100644 --- a/src/openrct2/platform/Posix.cpp +++ b/src/openrct2/platform/Posix.cpp @@ -99,7 +99,7 @@ bool platform_ensure_directory_exists(const utf8* path) bool platform_directory_delete(const utf8* path) { - return fs::remove_all(fs::u8path(path)) > 0; + return fs::remove_all(u8path(path)) > 0; } std::string platform_get_absolute_path(const utf8* relative_path, const utf8* base_path) diff --git a/src/openrct2/platform/Shared.cpp b/src/openrct2/platform/Shared.cpp index fa850d9360..0b22d00830 100644 --- a/src/openrct2/platform/Shared.cpp +++ b/src/openrct2/platform/Shared.cpp @@ -115,7 +115,7 @@ namespace Platform bool FileExists(std::string_view path) { - fs::path file = fs::u8path(path); + fs::path file = u8path(path); log_verbose("Checking if file exists: %s", std::string(path).c_str()); return fs::exists(file); } diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp index 8bd808a3a5..c83f896d27 100644 --- a/src/openrct2/scenario/ScenarioRepository.cpp +++ b/src/openrct2/scenario/ScenarioRepository.cpp @@ -176,7 +176,7 @@ private: { if (String::Equals(Path::GetExtension(path), ".sea", true)) { - auto data = DecryptSea(fs::u8path(path)); + auto data = DecryptSea(u8path(path)); auto ms = std::make_unique(); // Need to copy the data into MemoryStream as the overload will borrow instead of copy. ms->Write(data.data(), data.size()); diff --git a/src/openrct2/scripting/bindings/game/ScContext.hpp b/src/openrct2/scripting/bindings/game/ScContext.hpp index acf1ab7a4a..11ea877f37 100644 --- a/src/openrct2/scripting/bindings/game/ScContext.hpp +++ b/src/openrct2/scripting/bindings/game/ScContext.hpp @@ -64,7 +64,7 @@ namespace OpenRCT2::Scripting try { CaptureOptions captureOptions; - captureOptions.Filename = fs::u8path(AsOrDefault(options["filename"], "")); + captureOptions.Filename = u8path(AsOrDefault(options["filename"], "")); captureOptions.Rotation = options["rotation"].as_int() & 3; captureOptions.Zoom = ZoomLevel(options["zoom"].as_int()); captureOptions.Transparent = AsOrDefault(options["transparent"], false);