From dc8e1e75487461ec9bff433144f0db831b682403 Mon Sep 17 00:00:00 2001 From: Russell Yanofsky Date: Thu, 7 Nov 2019 22:01:22 -0500 Subject: Clarify emptyIncludeConf logic Suggestion from John Newbery in https://github.com/bitcoin/bitcoin/pull/15934#discussion_r343795528 --- src/util/system.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/util/system.cpp b/src/util/system.cpp index 7da408eda5..9254004191 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -894,14 +894,19 @@ bool ArgsManager::ReadConfigFiles(std::string& error, bool ignore_invalid_keys) if (!ReadConfigStream(stream, confPath, error, ignore_invalid_keys)) { return false; } - // if there is an -includeconf in the override args, but it is empty, that means the user - // passed '-noincludeconf' on the command line, in which case we should not include anything - bool emptyIncludeConf; + // `-includeconf` cannot be included in the command line arguments except + // as `-noincludeconf` (which indicates that no conf file should be used). + bool use_conf_file{true}; { LOCK(cs_args); - emptyIncludeConf = m_override_args.count("-includeconf") == 0; + auto it = m_override_args.find("-includeconf"); + if (it != m_override_args.end()) { + // ParseParameters() fails if a non-negated -includeconf is passed on the command-line + assert(it->second.empty()); + use_conf_file = false; + } } - if (emptyIncludeConf) { + if (use_conf_file) { std::string chain_id = GetChainName(); std::vector includeconf(GetArgs("-includeconf")); { -- cgit v1.2.3