It seems like this function is only used to call ArgsManager::CreateDataDirIfNotExists(false). Unless I misunderstand, I think it makes more sense to just make ArgsManager::CreateDataDirIfNotExists public? It's less code and a more clear intent, imo.
<details>
<summary>git diff (overlaps a bit with my other comment)</summary>
diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp
index 3d154961b..49a709628 100644
--- a/src/bitcoind.cpp
+++ b/src/bitcoind.cpp
@@ -153,7 +153,7 @@ static bool AppInit(NodeContext& node, int argc, char* argv[])
if (!CheckDataDirOption()) {
return InitError(Untranslated(strprintf("Specified data directory \"%s\" does not exist.\n", args.GetArg("-datadir", ""))));
}
- args.GetOrCreateConfigFilePath();
+ args.CreateDataDirIfNotExists(false);
if (!args.ReadConfigFiles(error, true)) {
return InitError(Untranslated(strprintf("Error reading configuration file: %s\n", error)));
}
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index f69c4be2d..fa3d0ab92 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -596,7 +596,7 @@ int GuiMain(int argc, char* argv[])
try {
/// 6b. Parse bitcoin.conf
/// - Do not call gArgs.GetDataDirNet() before this step finishes
- gArgs.GetOrCreateConfigFilePath();
+ gArgs.CreateDataDirIfNotExists(false);
if (!gArgs.ReadConfigFiles(error, true)) {
InitError(strprintf(Untranslated("Error reading configuration file: %s\n"), error));
QMessageBox::critical(nullptr, PACKAGE_NAME,
diff --git a/src/util/system.cpp b/src/util/system.cpp
index 11991f1ab..335630599 100644
--- a/src/util/system.cpp
+++ b/src/util/system.cpp
@@ -967,17 +967,9 @@ bool ArgsManager::ReadConfigStream(std::istream& stream, const std::string& file
return true;
}
-void ArgsManager::GetConfigFilePath(fs::path& conf_path, fs::path& conf_file)
+fs::path ArgsManager::GetConfigFilePath()
{
- conf_path = GetPathArg("-conf", BITCOIN_CONF_FILENAME);
- conf_file = GetConfigFile(conf_path);
-}
-
-void ArgsManager::GetOrCreateConfigFilePath()
-{
- fs::path conf_path, conf_file;
- GetConfigFilePath(conf_path, conf_file);
- CreateDataDirIfNotExists(false);
+ return GetConfigFile(GetPathArg("-conf", BITCOIN_CONF_FILENAME));
}
bool ArgsManager::ReadConfigFiles(std::string& error, bool ignore_invalid_keys)
@@ -988,9 +980,8 @@ bool ArgsManager::ReadConfigFiles(std::string& error, bool ignore_invalid_keys)
m_config_sections.clear();
}
- fs::path conf_path, conf_file;
- GetConfigFilePath(conf_path, conf_file);
- std::ifstream stream{conf_file};
+ 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 e3cb56d06..85b1f00d0 100644
--- a/src/util/system.h
+++ b/src/util/system.h
@@ -242,8 +242,7 @@ protected:
void SelectConfigNetwork(const std::string& network);
[[nodiscard]] bool ParseParameters(int argc, const char* const argv[], std::string& error);
- void GetConfigFilePath(fs::path& conf_path, fs::path& conf_file);
- void GetOrCreateConfigFilePath();
+ fs::path GetConfigFilePath();
[[nodiscard]] bool ReadConfigFiles(std::string& error, bool ignore_invalid_keys = false);
/**
@@ -477,6 +476,13 @@ protected:
*/
void LogArgs() const;
+ /**
+ * Create data directory if it doesn't exist
+ *
+ * [@param](/bitcoin-bitcoin/contributor/param/) net_specific Create a network-identified data directory
+ */
+ void CreateDataDirIfNotExists(bool net_specific);
+
private:
/**
* Get data directory path
@@ -486,13 +492,6 @@ private:
*/
const fs::path& GetDataDir(bool net_specific) const;
- /**
- * Create data directory if it doesn't exist
- *
- * [@param](/bitcoin-bitcoin/contributor/param/) net_specific Create a network-identified data directory
- */
- void CreateDataDirIfNotExists(bool net_specific);
-
// Helper function for LogArgs().
void logArgsPrefix(
const std::string& prefix,
</details>