From 9dc1c429f747d4abedcc803792fbf537e3d5305c Mon Sep 17 00:00:00 2001 From: Some Random Crypto Guy Date: Wed, 5 Jun 2024 15:52:35 +0100 Subject: [PATCH] replaced the windows fixes back into the rebased code --- .../storages/portable_storage_val_converters.h | 1 + src/common/boost_serialization_helper.h | 3 ++- src/common/util.cpp | 18 ++++++++++++++++++ src/common/util.h | 2 ++ src/p2p/net_peerlist.cpp | 5 +++-- src/wallet/wallet2.cpp | 8 +++++--- 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/contrib/epee/include/storages/portable_storage_val_converters.h b/contrib/epee/include/storages/portable_storage_val_converters.h index 96b0c024c..8c32481b0 100644 --- a/contrib/epee/include/storages/portable_storage_val_converters.h +++ b/contrib/epee/include/storages/portable_storage_val_converters.h @@ -36,6 +36,7 @@ #include "warnings.h" #include "misc_log_ex.h" +#include #include #include #include diff --git a/src/common/boost_serialization_helper.h b/src/common/boost_serialization_helper.h index 4a903107f..cddd5d882 100644 --- a/src/common/boost_serialization_helper.h +++ b/src/common/boost_serialization_helper.h @@ -110,7 +110,8 @@ namespace tools catch(...) { // if failed, try reading in unportable mode - boost::filesystem::copy_file(file_path, file_path + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); + //boost::filesystem::copy_file(file_path, file_path + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); + tools::copy_file(file_path, file_path + ".unportable"); data_file.close(); data_file.open( file_path, std::ios_base::binary | std::ios_base::in); if(data_file.fail()) diff --git a/src/common/util.cpp b/src/common/util.cpp index 4b5e2adb8..d5f35ea7a 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -115,6 +115,24 @@ static int flock_exnb(int fd) namespace tools { + + void copy_file(const std::string& from, const std::string& to) + { + using boost::filesystem::path; + #if BOOST_VERSION < 107400 + // Remove this preprocessor if/else when we are bumping the boost version. + boost::filesystem::copy_file( + path(from), + path(to), + boost::filesystem::copy_option::overwrite_if_exists); + #else + boost::filesystem::copy_file( + path(from), + path(to), + boost::filesystem::copy_options::overwrite_existing); + #endif + } + std::function signal_handler::m_handler; private_file::private_file() noexcept : m_handle(), m_filename() {} diff --git a/src/common/util.h b/src/common/util.h index f489594e8..138b90186 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -67,6 +67,8 @@ namespace tools } }; + void copy_file(const std::string& from, const std::string& to); + //! A file restricted to process owner AND process. Deletes file on destruction. class private_file { std::unique_ptr m_handle; diff --git a/src/p2p/net_peerlist.cpp b/src/p2p/net_peerlist.cpp index 3e132c91f..0ca3979b0 100644 --- a/src/p2p/net_peerlist.cpp +++ b/src/p2p/net_peerlist.cpp @@ -42,7 +42,7 @@ #include #include "net_peerlist_boost_serialization.h" - +#include "common/util.h" namespace nodetool { @@ -200,7 +200,8 @@ namespace nodetool if (!out) { // if failed, try reading in unportable mode - boost::filesystem::copy_file(path, path + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); + //boost::filesystem::copy_file(path, path + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); + tools::copy_file(path, path + ".unportable"); src_file.close(); src_file.open( path , std::ios_base::binary | std::ios_base::in); if(src_file.fail()) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 7506ea5cb..d033e5f4c 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -6425,8 +6425,9 @@ void wallet2::load(const std::string& wallet_, const epee::wipeable_string& pass catch (...) { LOG_PRINT_L0("Failed to open portable binary, trying unportable"); - if (use_fs) boost::filesystem::copy_file(m_wallet_file, m_wallet_file + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); - std::stringstream iss; + //if (use_fs) boost::filesystem::copy_file(m_wallet_file, m_wallet_file + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); + if (use_fs) tools::copy_file(m_wallet_file, m_wallet_file + ".unportable"); + std::stringstream iss; iss.str(""); iss << cache_data; boost::archive::binary_iarchive ar(iss); @@ -6447,7 +6448,8 @@ void wallet2::load(const std::string& wallet_, const epee::wipeable_string& pass catch (...) { LOG_PRINT_L0("Failed to open portable binary, trying unportable"); - if (use_fs) boost::filesystem::copy_file(m_wallet_file, m_wallet_file + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); + //if (use_fs) boost::filesystem::copy_file(m_wallet_file, m_wallet_file + ".unportable", boost::filesystem::copy_option::overwrite_if_exists); + if (use_fs) tools::copy_file(m_wallet_file, m_wallet_file + ".unportable"); std::stringstream iss; iss.str(""); iss << cache_file_buf;