mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-22 07:22:25 +00:00
common: support boost filesystem copy_options.
Co-authored-by: selsta <selsta@sent.at>
This commit is contained in:
parent
81d4db08eb
commit
755dddd2bc
6 changed files with 33 additions and 10 deletions
|
@ -35,6 +35,7 @@
|
||||||
#include <boost/archive/portable_binary_iarchive.hpp>
|
#include <boost/archive/portable_binary_iarchive.hpp>
|
||||||
#include <boost/filesystem/operations.hpp>
|
#include <boost/filesystem/operations.hpp>
|
||||||
|
|
||||||
|
#include "common/util.h"
|
||||||
|
|
||||||
namespace tools
|
namespace tools
|
||||||
{
|
{
|
||||||
|
@ -110,7 +111,7 @@ namespace tools
|
||||||
catch(...)
|
catch(...)
|
||||||
{
|
{
|
||||||
// if failed, try reading in unportable mode
|
// if failed, try reading in unportable mode
|
||||||
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.close();
|
||||||
data_file.open( file_path, std::ios_base::binary | std::ios_base::in);
|
data_file.open( file_path, std::ios_base::binary | std::ios_base::in);
|
||||||
if(data_file.fail())
|
if(data_file.fail())
|
||||||
|
|
|
@ -115,6 +115,24 @@ static int flock_exnb(int fd)
|
||||||
|
|
||||||
namespace tools
|
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<void(int)> signal_handler::m_handler;
|
std::function<void(int)> signal_handler::m_handler;
|
||||||
|
|
||||||
private_file::private_file() noexcept : m_handle(), m_filename() {}
|
private_file::private_file() noexcept : m_handle(), m_filename() {}
|
||||||
|
|
|
@ -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.
|
//! A file restricted to process owner AND process. Deletes file on destruction.
|
||||||
class private_file {
|
class private_file {
|
||||||
std::unique_ptr<std::FILE, close_file> m_handle;
|
std::unique_ptr<std::FILE, close_file> m_handle;
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
#include <boost/serialization/version.hpp>
|
#include <boost/serialization/version.hpp>
|
||||||
|
|
||||||
#include "net_peerlist_boost_serialization.h"
|
#include "net_peerlist_boost_serialization.h"
|
||||||
|
#include "common/util.h"
|
||||||
|
|
||||||
|
|
||||||
namespace nodetool
|
namespace nodetool
|
||||||
|
@ -200,7 +201,7 @@ namespace nodetool
|
||||||
if (!out)
|
if (!out)
|
||||||
{
|
{
|
||||||
// if failed, try reading in unportable mode
|
// if failed, try reading in unportable mode
|
||||||
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.close();
|
||||||
src_file.open( path , std::ios_base::binary | std::ios_base::in);
|
src_file.open( path , std::ios_base::binary | std::ios_base::in);
|
||||||
if(src_file.fail())
|
if(src_file.fail())
|
||||||
|
|
|
@ -6208,7 +6208,7 @@ void wallet2::load(const std::string& wallet_, const epee::wipeable_string& pass
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
LOG_PRINT_L0("Failed to open portable binary, trying unportable");
|
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) tools::copy_file(m_wallet_file, m_wallet_file + ".unportable");
|
||||||
std::stringstream iss;
|
std::stringstream iss;
|
||||||
iss.str("");
|
iss.str("");
|
||||||
iss << cache_data;
|
iss << cache_data;
|
||||||
|
@ -6230,7 +6230,7 @@ void wallet2::load(const std::string& wallet_, const epee::wipeable_string& pass
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
LOG_PRINT_L0("Failed to open portable binary, trying unportable");
|
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) tools::copy_file(m_wallet_file, m_wallet_file + ".unportable");
|
||||||
std::stringstream iss;
|
std::stringstream iss;
|
||||||
iss.str("");
|
iss.str("");
|
||||||
iss << cache_file_buf;
|
iss << cache_file_buf;
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#include "file_io_utils.h"
|
#include "file_io_utils.h"
|
||||||
#include "wallet/wallet2.h"
|
#include "wallet/wallet2.h"
|
||||||
|
#include "common/util.h"
|
||||||
|
|
||||||
using namespace boost::filesystem;
|
using namespace boost::filesystem;
|
||||||
using namespace epee::file_io_utils;
|
using namespace epee::file_io_utils;
|
||||||
|
@ -47,8 +48,8 @@ TEST(wallet_storage, store_to_file2file)
|
||||||
ASSERT_TRUE(is_file_exist(source_wallet_file.string()));
|
ASSERT_TRUE(is_file_exist(source_wallet_file.string()));
|
||||||
ASSERT_TRUE(is_file_exist(source_wallet_file.string() + ".keys"));
|
ASSERT_TRUE(is_file_exist(source_wallet_file.string() + ".keys"));
|
||||||
|
|
||||||
copy_file(source_wallet_file, interm_wallet_file, copy_option::overwrite_if_exists);
|
tools::copy_file(source_wallet_file.string(), interm_wallet_file.string());
|
||||||
copy_file(source_wallet_file.string() + ".keys", interm_wallet_file.string() + ".keys", copy_option::overwrite_if_exists);
|
tools::copy_file(source_wallet_file.string() + ".keys", interm_wallet_file.string() + ".keys");
|
||||||
|
|
||||||
ASSERT_TRUE(is_file_exist(interm_wallet_file.string()));
|
ASSERT_TRUE(is_file_exist(interm_wallet_file.string()));
|
||||||
ASSERT_TRUE(is_file_exist(interm_wallet_file.string() + ".keys"));
|
ASSERT_TRUE(is_file_exist(interm_wallet_file.string() + ".keys"));
|
||||||
|
@ -138,8 +139,8 @@ TEST(wallet_storage, change_password_same_file)
|
||||||
ASSERT_TRUE(is_file_exist(source_wallet_file.string()));
|
ASSERT_TRUE(is_file_exist(source_wallet_file.string()));
|
||||||
ASSERT_TRUE(is_file_exist(source_wallet_file.string() + ".keys"));
|
ASSERT_TRUE(is_file_exist(source_wallet_file.string() + ".keys"));
|
||||||
|
|
||||||
copy_file(source_wallet_file, interm_wallet_file, copy_option::overwrite_if_exists);
|
tools::copy_file(source_wallet_file.string(), interm_wallet_file.string());
|
||||||
copy_file(source_wallet_file.string() + ".keys", interm_wallet_file.string() + ".keys", copy_option::overwrite_if_exists);
|
tools::copy_file(source_wallet_file.string() + ".keys", interm_wallet_file.string() + ".keys");
|
||||||
|
|
||||||
ASSERT_TRUE(is_file_exist(interm_wallet_file.string()));
|
ASSERT_TRUE(is_file_exist(interm_wallet_file.string()));
|
||||||
ASSERT_TRUE(is_file_exist(interm_wallet_file.string() + ".keys"));
|
ASSERT_TRUE(is_file_exist(interm_wallet_file.string() + ".keys"));
|
||||||
|
@ -177,8 +178,8 @@ TEST(wallet_storage, change_password_different_file)
|
||||||
ASSERT_TRUE(is_file_exist(source_wallet_file.string()));
|
ASSERT_TRUE(is_file_exist(source_wallet_file.string()));
|
||||||
ASSERT_TRUE(is_file_exist(source_wallet_file.string() + ".keys"));
|
ASSERT_TRUE(is_file_exist(source_wallet_file.string() + ".keys"));
|
||||||
|
|
||||||
copy_file(source_wallet_file, interm_wallet_file, copy_option::overwrite_if_exists);
|
tools::copy_file(source_wallet_file.string(), interm_wallet_file.string());
|
||||||
copy_file(source_wallet_file.string() + ".keys", interm_wallet_file.string() + ".keys", copy_option::overwrite_if_exists);
|
tools::copy_file(source_wallet_file.string() + ".keys", interm_wallet_file.string() + ".keys");
|
||||||
|
|
||||||
ASSERT_TRUE(is_file_exist(interm_wallet_file.string()));
|
ASSERT_TRUE(is_file_exist(interm_wallet_file.string()));
|
||||||
ASSERT_TRUE(is_file_exist(interm_wallet_file.string() + ".keys"));
|
ASSERT_TRUE(is_file_exist(interm_wallet_file.string() + ".keys"));
|
||||||
|
|
Loading…
Reference in a new issue