Merge pull request #203

583cf0a Document existing function (warptangent)
95eb944 Repeat prompt for wallet path if invalid (warptangent)
This commit is contained in:
Riccardo Spagni 2014-12-13 13:52:27 +02:00
commit f4675dc05d
No known key found for this signature in database
GPG key ID: 55432DF31CCD4FCD
3 changed files with 41 additions and 4 deletions

View file

@ -345,14 +345,28 @@ bool simple_wallet::ask_wallet_create_if_needed()
{ {
std::string wallet_path; std::string wallet_path;
wallet_path = command_line::input_line( bool valid_path = false;
"Specify wallet file name (e.g., wallet.bin). If the wallet doesn't exist, it will be created.\n" do {
"Wallet file name: " wallet_path = command_line::input_line(
); "Specify wallet file name (e.g., wallet.bin). If the wallet doesn't exist, it will be created.\n"
"Wallet file name: "
);
valid_path = tools::wallet2::wallet_valid_path_format(wallet_path);
if (!valid_path)
{
fail_msg_writer() << "wallet file path not valid: " << wallet_path;
}
}
while (!valid_path);
bool keys_file_exists; bool keys_file_exists;
bool wallet_file_exists; bool wallet_file_exists;
tools::wallet2::wallet_exists(wallet_path, keys_file_exists, wallet_file_exists); tools::wallet2::wallet_exists(wallet_path, keys_file_exists, wallet_file_exists);
LOG_PRINT_L3("wallet_path: " << wallet_path << "");
LOG_PRINT_L3("keys_file_exists: " << std::boolalpha << keys_file_exists << std::noboolalpha
<< " wallet_file_exists: " << std::boolalpha << wallet_file_exists << std::noboolalpha);
LOG_PRINT_L1("Loading wallet...");
// add logic to error out if new wallet requested but named wallet file exists // add logic to error out if new wallet requested but named wallet file exists
if (keys_file_exists || wallet_file_exists) if (keys_file_exists || wallet_file_exists)
@ -635,6 +649,12 @@ bool simple_wallet::new_wallet(const std::string &wallet_file, const std::string
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
bool simple_wallet::open_wallet(const string &wallet_file, const std::string& password, bool testnet) bool simple_wallet::open_wallet(const string &wallet_file, const std::string& password, bool testnet)
{ {
if (!tools::wallet2::wallet_valid_path_format(wallet_file))
{
fail_msg_writer() << "wallet file path not valid: " << wallet_file;
return false;
}
m_wallet_file = wallet_file; m_wallet_file = wallet_file;
m_wallet.reset(new tools::wallet2(testnet)); m_wallet.reset(new tools::wallet2(testnet));
m_wallet->callback(this); m_wallet->callback(this);

View file

@ -679,6 +679,11 @@ void wallet2::wallet_exists(const std::string& file_path, bool& keys_file_exists
wallet_file_exists = boost::filesystem::exists(wallet_file, ignore); wallet_file_exists = boost::filesystem::exists(wallet_file, ignore);
} }
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
bool wallet2::wallet_valid_path_format(const std::string& file_path)
{
return !file_path.empty();
}
//----------------------------------------------------------------------------------------------------
bool wallet2::parse_payment_id(const std::string& payment_id_str, crypto::hash& payment_id) bool wallet2::parse_payment_id(const std::string& payment_id_str, crypto::hash& payment_id)
{ {
cryptonote::blobdata payment_id_data; cryptonote::blobdata payment_id_data;

View file

@ -229,7 +229,19 @@ namespace tools
a & m_payments; a & m_payments;
} }
/*!
* \brief Check if wallet keys and bin files exist
* \param file_path Wallet file path
* \param keys_file_exists Whether keys file exists
* \param wallet_file_exists Whether bin file exists
*/
static void wallet_exists(const std::string& file_path, bool& keys_file_exists, bool& wallet_file_exists); static void wallet_exists(const std::string& file_path, bool& keys_file_exists, bool& wallet_file_exists);
/*!
* \brief Check if wallet file path is valid format
* \param file_path Wallet file path
* \return Whether path is valid format
*/
static bool wallet_valid_path_format(const std::string& file_path);
static bool parse_payment_id(const std::string& payment_id_str, crypto::hash& payment_id); static bool parse_payment_id(const std::string& payment_id_str, crypto::hash& payment_id);