From 6921c8391e788d6d4440b8498f283c4b465ff145 Mon Sep 17 00:00:00 2001 From: r4sas Date: Sun, 12 May 2024 23:58:05 +0000 Subject: [PATCH] [FS] boost 1.85.0 support Signed-off-by: r4sas --- libi2pd/FS.cpp | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/libi2pd/FS.cpp b/libi2pd/FS.cpp index 233f5766..47a3e52c 100644 --- a/libi2pd/FS.cpp +++ b/libi2pd/FS.cpp @@ -54,7 +54,11 @@ namespace fs { const std::string GetUTF8DataDir () { #ifdef _WIN32 +#if (BOOST_VERSION >= 108500) + boost::filesystem::path path (dataDir); +#else boost::filesystem::wpath path (dataDir); +#endif auto loc = boost::filesystem::path::imbue(std::locale( std::locale(), new std::codecvt_utf8_utf16() ) ); // convert path to UTF-8 auto dataDirUTF8 = path.string(); boost::filesystem::path::imbue(loc); // Return locale settings back @@ -87,7 +91,11 @@ namespace fs { } else { +#if (BOOST_VERSION >= 108500) + dataDir = boost::filesystem::path(commonAppData).string() + "\\" + appName; +#else dataDir = boost::filesystem::wpath(commonAppData).string() + "\\" + appName; +#endif } #else dataDir = "/var/lib/" + appName; @@ -112,7 +120,11 @@ namespace fs { } else { +#if (BOOST_VERSION >= 108500) + auto execPath = boost::filesystem::path(localAppData).parent_path(); +#else auto execPath = boost::filesystem::wpath(localAppData).parent_path(); +#endif // if config file exists in .exe's folder use it if(boost::filesystem::exists(execPath/"i2pd.conf")) // TODO: magic string @@ -131,7 +143,11 @@ namespace fs { } else { +#if (BOOST_VERSION >= 108500) + dataDir = boost::filesystem::path(localAppData).string() + "\\" + appName; +#else dataDir = boost::filesystem::wpath(localAppData).string() + "\\" + appName; +#endif } } } @@ -257,19 +273,19 @@ namespace fs { if (boost::filesystem::exists(p)) continue; #if TARGET_OS_SIMULATOR - // ios simulator fs says it is case sensitive, but it is not - boost::system::error_code ec; - if (boost::filesystem::create_directory(p, ec)) - continue; - switch (ec.value()) { - case boost::system::errc::file_exists: - case boost::system::errc::success: - continue; - default: - throw boost::system::system_error( ec, __func__ ); - } + // ios simulator fs says it is case sensitive, but it is not + boost::system::error_code ec; + if (boost::filesystem::create_directory(p, ec)) + continue; + switch (ec.value()) { + case boost::system::errc::file_exists: + case boost::system::errc::success: + continue; + default: + throw boost::system::system_error( ec, __func__ ); + } #else - if (boost::filesystem::create_directory(p)) + if (boost::filesystem::create_directory(p)) continue; /* ^ throws exception on failure */ #endif return false;