Changeset View
Changeset View
Standalone View
Standalone View
src/wallet/wallettool.cpp
Show First 20 Lines • Show All 126 Lines • ▼ Show 20 Lines | |||||
static bool SalvageWallet(const fs::path &path) { | static bool SalvageWallet(const fs::path &path) { | ||||
// Create a Database handle to allow for the db to be initialized before | // Create a Database handle to allow for the db to be initialized before | ||||
// recovery | // recovery | ||||
std::unique_ptr<WalletDatabase> database = WalletDatabase::Create(path); | std::unique_ptr<WalletDatabase> database = WalletDatabase::Create(path); | ||||
// Initialize the environment before recovery | // Initialize the environment before recovery | ||||
bilingual_str error_string; | bilingual_str error_string; | ||||
try { | try { | ||||
WalletBatch::VerifyEnvironment(path, error_string); | database->Verify(error_string); | ||||
} catch (const fs::filesystem_error &e) { | } catch (const fs::filesystem_error &e) { | ||||
error_string = | error_string = | ||||
Untranslated(strprintf("Error loading wallet. %s", | Untranslated(strprintf("Error loading wallet. %s", | ||||
fsbridge::get_filesystem_error_message(e))); | fsbridge::get_filesystem_error_message(e))); | ||||
} | } | ||||
if (!error_string.original.empty()) { | if (!error_string.original.empty()) { | ||||
tfm::format(std::cerr, "Failed to open wallet for salvage :%s\n", | tfm::format(std::cerr, "Failed to open wallet for salvage :%s\n", | ||||
error_string.original); | error_string.original); | ||||
Show All 14 Lines | if (command == "create") { | ||||
WalletShowInfo(wallet_instance.get()); | WalletShowInfo(wallet_instance.get()); | ||||
wallet_instance->Flush(true); | wallet_instance->Flush(true); | ||||
} | } | ||||
} else if (command == "info" || command == "salvage") { | } else if (command == "info" || command == "salvage") { | ||||
if (!fs::exists(path)) { | if (!fs::exists(path)) { | ||||
tfm::format(std::cerr, "Error: no wallet file at %s\n", name); | tfm::format(std::cerr, "Error: no wallet file at %s\n", name); | ||||
return false; | return false; | ||||
} | } | ||||
bilingual_str error; | |||||
if (!WalletBatch::VerifyEnvironment(path, error)) { | |||||
tfm::format(std::cerr, | |||||
"%s\nError loading %s. Is wallet being used by other " | |||||
"process?\n", | |||||
error.original, name); | |||||
return false; | |||||
} | |||||
if (command == "info") { | if (command == "info") { | ||||
std::shared_ptr<CWallet> wallet_instance = LoadWallet(name, path); | std::shared_ptr<CWallet> wallet_instance = LoadWallet(name, path); | ||||
if (!wallet_instance) { | if (!wallet_instance) { | ||||
return false; | return false; | ||||
} | } | ||||
WalletShowInfo(wallet_instance.get()); | WalletShowInfo(wallet_instance.get()); | ||||
wallet_instance->Flush(true); | wallet_instance->Flush(true); | ||||
Show All 11 Lines |