aboutsummaryrefslogtreecommitdiff
path: root/src/util.cpp
diff options
context:
space:
mode:
authorKarl-Johan Alm <karljohan-alm@garage.co.jp>2018-05-09 16:49:59 +0900
committerKarl-Johan Alm <karljohan-alm@garage.co.jp>2018-05-10 11:02:20 +0900
commitc5bcc7dbe9af7f4124e7c78159fe36eae3a304d4 (patch)
tree86657083fbed158fe4aaaade7c718b818de43a3b /src/util.cpp
parent196c5a947a071f7c9c5b211f0a47787a7d540ecb (diff)
downloadbitcoin-c5bcc7dbe9af7f4124e7c78159fe36eae3a304d4.tar.xz
util: warn about recursive -includeconf arguments in configuration files
Since -includeconf cannot be used recursively, the user would not see feedback that an -includeconf in an -includeconf'd file was silently ignored.
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/util.cpp b/src/util.cpp
index 7dd6884f75..6a2b2c1ed4 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -790,6 +790,14 @@ void ArgsManager::ReadConfigFiles()
includeconf.insert(includeconf.end(), includeconf_net.begin(), includeconf_net.end());
}
+ // Remove -includeconf from configuration, so we can warn about recursion
+ // later
+ {
+ LOCK(cs_args);
+ m_config_args.erase("-includeconf");
+ m_config_args.erase(std::string("-") + GetChainName() + ".includeconf");
+ }
+
for (const std::string& to_include : includeconf) {
fs::ifstream include_config(GetConfigFile(to_include));
if (include_config.good()) {
@@ -799,6 +807,16 @@ void ArgsManager::ReadConfigFiles()
fprintf(stderr, "Failed to include configuration file %s\n", to_include.c_str());
}
}
+
+ // Warn about recursive -includeconf
+ includeconf = GetArgs("-includeconf");
+ {
+ std::vector<std::string> includeconf_net(GetArgs(std::string("-") + GetChainName() + ".includeconf"));
+ includeconf.insert(includeconf.end(), includeconf_net.begin(), includeconf_net.end());
+ }
+ for (const std::string& to_include : includeconf) {
+ fprintf(stderr, "warning: -includeconf cannot be used from included files; ignoring -includeconf=%s\n", to_include.c_str());
+ }
}
}