ec527c6c88
Also warn if bitcoind is configured to use a relative -datadir path. Specifying paths relative to the current working directory in a daemon process can be dangerous, because files can fail to be located even if the configuration doesn't change, but the daemon is started up differently. Specifying a relative -datadir now adds a warning to the debug log. It would not be backwards-compatible to forbid relative -datadir paths entirely, and it could also be also inconvenient for command line testing. Specifying a relative -walletdir now results in a startup error. But since the -walletdir option is new in 0.16.0, there should be no compatibility issues. Another reason not to use working directory paths for -walletdir specifically is that the default -walletdir is a "wallets" subdirectory inside the datadir, so it could be surprising that setting -walletdir manually would choose a directory rooted in a completely different location.
27 lines
786 B
C++
27 lines
786 B
C++
// Copyright (c) 2017 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#include <wallet/walletutil.h>
|
|
|
|
fs::path GetWalletDir()
|
|
{
|
|
fs::path path;
|
|
|
|
if (gArgs.IsArgSet("-walletdir")) {
|
|
path = gArgs.GetArg("-walletdir", "");
|
|
if (!fs::is_directory(path)) {
|
|
// If the path specified doesn't exist, we return the deliberately
|
|
// invalid empty string.
|
|
path = "";
|
|
}
|
|
} else {
|
|
path = GetDataDir();
|
|
// If a wallets directory exists, use that, otherwise default to GetDataDir
|
|
if (fs::is_directory(path / "wallets")) {
|
|
path /= "wallets";
|
|
}
|
|
}
|
|
|
|
return path;
|
|
}
|