aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wallet/dump.cpp7
-rw-r--r--src/wallet/dump.h5
-rw-r--r--src/wallet/wallettool.cpp12
3 files changed, 13 insertions, 11 deletions
diff --git a/src/wallet/dump.cpp b/src/wallet/dump.cpp
index 3ac5cf03b1..7a36910dc1 100644
--- a/src/wallet/dump.cpp
+++ b/src/wallet/dump.cpp
@@ -8,6 +8,7 @@
#include <util/fs.h>
#include <util/translation.h>
#include <wallet/wallet.h>
+#include <wallet/walletdb.h>
#include <algorithm>
#include <fstream>
@@ -20,7 +21,7 @@ namespace wallet {
static const std::string DUMP_MAGIC = "BITCOIN_CORE_WALLET_DUMP";
uint32_t DUMP_VERSION = 1;
-bool DumpWallet(const ArgsManager& args, CWallet& wallet, bilingual_str& error)
+bool DumpWallet(const ArgsManager& args, WalletDatabase& db, bilingual_str& error)
{
// Get the dumpfile
std::string dump_filename = args.GetArg("-dumpfile", "");
@@ -44,7 +45,6 @@ bool DumpWallet(const ArgsManager& args, CWallet& wallet, bilingual_str& error)
HashWriter hasher{};
- WalletDatabase& db = wallet.GetDatabase();
std::unique_ptr<DatabaseBatch> batch = db.MakeBatch();
bool ret = true;
@@ -90,9 +90,6 @@ bool DumpWallet(const ArgsManager& args, CWallet& wallet, bilingual_str& error)
cursor.reset();
batch.reset();
- // Close the wallet after we're done with it. The caller won't be doing this
- wallet.Close();
-
if (ret) {
// Write the hash
tfm::format(dump_file, "checksum,%s\n", HexStr(hasher.GetHash()));
diff --git a/src/wallet/dump.h b/src/wallet/dump.h
index 5034f95479..9b44af922e 100644
--- a/src/wallet/dump.h
+++ b/src/wallet/dump.h
@@ -14,8 +14,9 @@ struct bilingual_str;
class ArgsManager;
namespace wallet {
-class CWallet;
-bool DumpWallet(const ArgsManager& args, CWallet& wallet, bilingual_str& error);
+class WalletDatabase;
+
+bool DumpWallet(const ArgsManager& args, WalletDatabase& db, bilingual_str& error);
bool CreateFromDump(const ArgsManager& args, const std::string& name, const fs::path& wallet_path, bilingual_str& error, std::vector<bilingual_str>& warnings);
} // namespace wallet
diff --git a/src/wallet/wallettool.cpp b/src/wallet/wallettool.cpp
index 2f3f8ef77d..cda344ab19 100644
--- a/src/wallet/wallettool.cpp
+++ b/src/wallet/wallettool.cpp
@@ -68,7 +68,6 @@ static std::shared_ptr<CWallet> MakeWallet(const std::string& name, const fs::pa
}
if (load_wallet_ret != DBErrors::LOAD_OK) {
- wallet_instance = nullptr;
if (load_wallet_ret == DBErrors::CORRUPT) {
tfm::format(std::cerr, "Error loading %s: Wallet corrupted", name);
return nullptr;
@@ -194,10 +193,15 @@ bool ExecuteWalletToolFunc(const ArgsManager& args, const std::string& command)
DatabaseOptions options;
ReadDatabaseArgs(args, options);
options.require_existing = true;
- const std::shared_ptr<CWallet> wallet_instance = MakeWallet(name, path, options);
- if (!wallet_instance) return false;
+ DatabaseStatus status;
bilingual_str error;
- bool ret = DumpWallet(args, *wallet_instance, error);
+ std::unique_ptr<WalletDatabase> database = MakeDatabase(path, options, status, error);
+ if (!database) {
+ tfm::format(std::cerr, "%s\n", error.original);
+ return false;
+ }
+
+ bool ret = DumpWallet(args, *database, error);
if (!ret && !error.empty()) {
tfm::format(std::cerr, "%s\n", error.original);
return ret;