aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2018-03-14 13:37:14 +0200
committerRiccardo Spagni <ric@spagni.net>2018-03-14 13:37:14 +0200
commit3bc2537f5a9d629780431211b779ce3e8c0205db (patch)
tree19643dcb48b2f004ee035449644e4ae31ea6d4a0
parentMerge pull request #3360 (diff)
parentwallet: fixes and tweaks to the save_watch_only command (diff)
downloadmonero-3bc2537f5a9d629780431211b779ce3e8c0205db.tar.xz
Merge pull request #3369
1979d53d wallet: fixes and tweaks to the save_watch_only command (moneromooo-monero)
-rw-r--r--src/simplewallet/simplewallet.cpp12
-rw-r--r--src/wallet/wallet2.cpp12
-rw-r--r--src/wallet/wallet2.h2
3 files changed, 18 insertions, 8 deletions
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp
index 3a81e89ed..71ce1574f 100644
--- a/src/simplewallet/simplewallet.cpp
+++ b/src/simplewallet/simplewallet.cpp
@@ -3150,7 +3150,17 @@ bool simple_wallet::save_watch_only(const std::vector<std::string> &args/* = std
return true;
}
- m_wallet->write_watch_only_wallet(m_wallet_file, pwd_container->password());
+ try
+ {
+ std::string new_keys_filename;
+ m_wallet->write_watch_only_wallet(m_wallet_file, pwd_container->password(), new_keys_filename);
+ success_msg_writer() << tr("Watch only wallet saved as: ") << new_keys_filename;
+ }
+ catch (const std::exception &e)
+ {
+ fail_msg_writer() << tr("Failed to save watch only wallet: ") << e.what();
+ return true;
+ }
return true;
}
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index 6ec9d9930..b0488fc03 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -3447,15 +3447,15 @@ void wallet2::rewrite(const std::string& wallet_name, const epee::wipeable_strin
* \param wallet_name Base name of wallet file
* \param password Password for wallet file
*/
-void wallet2::write_watch_only_wallet(const std::string& wallet_name, const epee::wipeable_string& password)
+void wallet2::write_watch_only_wallet(const std::string& wallet_name, const epee::wipeable_string& password, std::string &new_keys_filename)
{
prepare_file_names(wallet_name);
boost::system::error_code ignored_ec;
- std::string filename = m_keys_file + "-watchonly";
- bool watch_only_keys_file_exists = boost::filesystem::exists(filename, ignored_ec);
- THROW_WALLET_EXCEPTION_IF(watch_only_keys_file_exists, error::file_save_error, filename);
- bool r = store_keys(filename, password, true);
- THROW_WALLET_EXCEPTION_IF(!r, error::file_save_error, filename);
+ new_keys_filename = m_wallet_file + "-watchonly.keys";
+ bool watch_only_keys_file_exists = boost::filesystem::exists(new_keys_filename, ignored_ec);
+ THROW_WALLET_EXCEPTION_IF(watch_only_keys_file_exists, error::file_save_error, new_keys_filename);
+ bool r = store_keys(new_keys_filename, password, true);
+ THROW_WALLET_EXCEPTION_IF(!r, error::file_save_error, new_keys_filename);
}
//----------------------------------------------------------------------------------------------------
void wallet2::wallet_exists(const std::string& file_path, bool& keys_file_exists, bool& wallet_file_exists)
diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h
index 9d4a7d75a..9accc65ca 100644
--- a/src/wallet/wallet2.h
+++ b/src/wallet/wallet2.h
@@ -552,7 +552,7 @@ namespace tools
* \param password Password for wallet file
*/
void rewrite(const std::string& wallet_name, const epee::wipeable_string& password);
- void write_watch_only_wallet(const std::string& wallet_name, const epee::wipeable_string& password);
+ void write_watch_only_wallet(const std::string& wallet_name, const epee::wipeable_string& password, std::string &new_keys_filename);
void load(const std::string& wallet, const epee::wipeable_string& password);
void store();
/*!