aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwillcl-ark <will@256k1.dev>2023-02-09 19:51:41 +0000
committerwillcl-ark <will@256k1.dev>2023-02-23 08:38:35 +0000
commit64c105442ce8c10900ea6fbecdbcfebe42f2d387 (patch)
tree7ff765c3c157883d7d2b4487fd67fd1d0bb9fafe
parent56e370fbb9413260723c598048392219b1055ad0 (diff)
util: make GetDataDir read-only & create datadir..
.. only in bitcoind and bitcoin-qt This changes behaviour of GetConfigFilePath which now always returns the absolute path of the provided -conf argument.
-rw-r--r--src/qt/bitcoin.cpp1
-rw-r--r--src/util/system.cpp15
-rw-r--r--src/util/system.h1
3 files changed, 5 insertions, 12 deletions
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 59f433749d..c383c8bd58 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -167,6 +167,7 @@ static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTrans
static bool InitSettings()
{
+ gArgs.EnsureDataDir();
if (!gArgs.GetSettingsPath()) {
return true; // Do nothing if settings file disabled.
}
diff --git a/src/util/system.cpp b/src/util/system.cpp
index d104d0d3f8..77b659df7e 100644
--- a/src/util/system.cpp
+++ b/src/util/system.cpp
@@ -417,8 +417,7 @@ const fs::path& ArgsManager::GetDataDir(bool net_specific) const
LOCK(cs_args);
fs::path& path = net_specific ? m_cached_network_datadir_path : m_cached_datadir_path;
- // Cache the path to avoid calling fs::create_directories on every call of
- // this function
+ // Used cached path if available
if (!path.empty()) return path;
const fs::path datadir{GetPathArg("-datadir")};
@@ -432,15 +431,8 @@ const fs::path& ArgsManager::GetDataDir(bool net_specific) const
path = GetDefaultDataDir();
}
- if (!fs::exists(path)) {
- fs::create_directories(path / "wallets");
- }
-
if (net_specific && !BaseParams().DataDir().empty()) {
path /= fs::PathFromString(BaseParams().DataDir());
- if (!fs::exists(path)) {
- fs::create_directories(path / "wallets");
- }
}
return path;
@@ -512,6 +504,7 @@ bool ArgsManager::IsArgSet(const std::string& strArg) const
bool ArgsManager::InitSettings(std::string& error)
{
+ EnsureDataDir();
if (!GetSettingsPath()) {
return true; // Do nothing if settings file disabled.
}
@@ -999,8 +992,8 @@ bool ArgsManager::ReadConfigFiles(std::string& error, bool ignore_invalid_keys)
m_config_sections.clear();
}
- const fs::path conf_path = GetPathArg("-conf", BITCOIN_CONF_FILENAME);
- std::ifstream stream{GetConfigFile(conf_path)};
+ const auto conf_path{GetConfigFilePath()};
+ std::ifstream stream{conf_path};
// not ok to have a config file specified that cannot be opened
if (IsArgSet("-conf") && !stream.good()) {
diff --git a/src/util/system.h b/src/util/system.h
index 49fcd751fc..14f093501a 100644
--- a/src/util/system.h
+++ b/src/util/system.h
@@ -492,7 +492,6 @@ private:
*
* @param net_specific Append network identifier to the returned path
* @return Absolute path on success, otherwise an empty path when a non-directory path would be returned
- * @post Returned directory path is created unless it is empty
*/
const fs::path& GetDataDir(bool net_specific) const;