From be7bf2e9d83a38a7622906e52d2f47173f459b90 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Wed, 20 Dec 2017 17:37:52 -0500 Subject: [PATCH] Merge #11726: Cleanups + nit fixes for walletdir PR aac6b3f067 Update files.md for new wallets/ subdirectory (MeshCollider) b67342906c Cleanups for walletdir PR (MeshCollider) Pull request description: This addresses the remaining nits from https://github.com/bitcoin/bitcoin/pull/11466 - Updates `doc/files.md` with respect to the new default wallet directory - Fixes @promag and @laanwj's error message nit, and Jonas' release notes nit - ~Addresses @laanwj's net-specific wallet subdirectory concern in the case that a walletdir is specified~ - Changes the #includes from "" to <> style after #11651 Tree-SHA512: b86bf5fdc4de54c1b0f65b60a83af3cf82b35d216ce9c0de724803bfba6934796238b6c412659dcc29ae2e3e856d4eb97ae777c80f36f4089d8acecfddefe9aa --- doc/files.md | 9 ++++++--- src/wallet/init.cpp | 5 ++++- src/wallet/walletutil.cpp | 2 +- src/wallet/walletutil.h | 3 ++- test/functional/multiwallet.py | 6 +++++- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/doc/files.md b/doc/files.md index db760b14e2..ae5067b80f 100644 --- a/doc/files.md +++ b/doc/files.md @@ -6,8 +6,8 @@ * chainstate/*; block chain state database (LevelDB) * dash.conf: contains configuration settings for dashd or dash-qt * dashd.pid: stores the process id of dashd while running -* database/*: BDB database environment; only used for wallet -* db.log: wallet database log file +* database/*: BDB database environment; only used for wallet; moved to wallets/ directory on new installs since 0.16.0 +* db.log: wallet database log file; moved to wallets/ directory on new installs since 0.16.0 * debug.log: contains debug information and general logging generated by dashd or dash-qt * evodb/*: special txes and quorums database * fee_estimates.dat: stores statistics used to estimate minimum transaction fees and priorities required for confirmation @@ -17,7 +17,10 @@ * mncache.dat: stores data for masternode list * netfulfilled.dat: stores data about recently made network requests * peers.dat: peer IP address database (custom format) -* wallet.dat: personal wallet (BDB) with keys and transactions +* wallet.dat: personal wallet (BDB) with keys and transactions; moved to wallets/ directory on new installs since 0.16.0 +* wallets/database/*: BDB database environment; used for wallets since 0.16.0 +* wallets/db.log: wallet database log file; since 0.16.0 +* wallets/wallet.dat: personal wallet (BDB) with keys and transactions; since 0.16.0 * .cookie: session RPC authentication cookie (written at start when cookie authentication is used, deleted on shutdown) * onion_private_key: cached Tor hidden service private key for `-listenonion` * guisettings.ini.bak: backup of former GUI settings after `-resetguisettings` is used diff --git a/src/wallet/init.cpp b/src/wallet/init.cpp index 4dab509621..77cf9222a1 100644 --- a/src/wallet/init.cpp +++ b/src/wallet/init.cpp @@ -213,7 +213,10 @@ bool VerifyWallets() } if (gArgs.IsArgSet("-walletdir") && !fs::is_directory(GetWalletDir())) { - return InitError(strprintf(_("Error: Specified wallet directory \"%s\" does not exist."), gArgs.GetArg("-walletdir", "").c_str())); + if (fs::exists(fs::system_complete(gArgs.GetArg("-walletdir", "")))) { + return InitError(strprintf(_("Specified -walletdir \"%s\" is not a directory"), gArgs.GetArg("-walletdir", "").c_str())); + } + return InitError(strprintf(_("Specified -walletdir \"%s\" does not exist"), gArgs.GetArg("-walletdir", "").c_str())); } LogPrintf("Using wallet directory %s\n", GetWalletDir().string()); diff --git a/src/wallet/walletutil.cpp b/src/wallet/walletutil.cpp index fbb5215a51..f15e5de1e2 100644 --- a/src/wallet/walletutil.cpp +++ b/src/wallet/walletutil.cpp @@ -2,7 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include "wallet/walletutil.h" +#include fs::path GetWalletDir() { diff --git a/src/wallet/walletutil.h b/src/wallet/walletutil.h index a94f286a44..50ff736402 100644 --- a/src/wallet/walletutil.h +++ b/src/wallet/walletutil.h @@ -5,7 +5,8 @@ #ifndef BITCOIN_WALLET_UTIL_H #define BITCOIN_WALLET_UTIL_H -#include "util.h" +#include +#include //! Get the path of the wallet directory. fs::path GetWalletDir(); diff --git a/test/functional/multiwallet.py b/test/functional/multiwallet.py index eb4d29b77f..c71622f3b6 100755 --- a/test/functional/multiwallet.py +++ b/test/functional/multiwallet.py @@ -40,7 +40,11 @@ class MultiWalletTest(BitcoinTestFramework): self.assert_start_raises_init_error(0, ['-wallet=w12'], 'Error loading wallet w12. -wallet filename must be a regular file.') # should not initialize if the specified walletdir does not exist - self.assert_start_raises_init_error(0, ['-walletdir=bad'], 'Error: Specified wallet directory "bad" does not exist.') + self.assert_start_raises_init_error(0, ['-walletdir=bad'], 'Error: Specified -walletdir "bad" does not exist') + # should not initialize if the specified walletdir is not a directory + not_a_dir = os.path.join(wallet_dir, 'notadir') + open(not_a_dir, 'a').close() + self.assert_start_raises_init_error(0, ['-walletdir='+not_a_dir], 'Error: Specified -walletdir "' + not_a_dir + '" is not a directory') # if wallets/ doesn't exist, datadir should be the default wallet dir wallet_dir2 = os.path.join(self.options.tmpdir, 'node0', 'regtest', 'walletdir')