Merge bitcoin/bitcoin#29301: init: settings, do not load auto-generated warning msg

987a1b51ee init: settings, do not load auto-generated warning msg (furszy)

Pull request description:

  Fixes https://github.com/bitcoin/bitcoin/pull/29144#issuecomment-1907071391.

  The settings warning message is meant to be used only to discourage users from
  modifying the file manually. Therefore, there is no need to keep it in memory.

ACKs for top commit:
  achow101:
    ACK 987a1b51ee
  ryanofsky:
    Code review ACK 987a1b51ee. Seems like a clean, simple fix

Tree-SHA512: 3f2bdcf4b4a9cadb396dcff9b43155211eeed018527a07356970a341d139ad18edbd1a4d369377c8907b8ec1f19ee2ab8aacf85a887379e6d57a8a6db2403d51
This commit is contained in:
Ava Chow
2024-01-31 16:13:08 -05:00

View File

@@ -31,6 +31,9 @@ enum class Source {
CONFIG_FILE_DEFAULT_SECTION CONFIG_FILE_DEFAULT_SECTION
}; };
// Json object key for the auto-generated warning comment
const std::string SETTINGS_WARN_MSG_KEY{"_warning_"};
//! Merge settings from multiple sources in precedence order: //! Merge settings from multiple sources in precedence order:
//! Forced config > command line > read-write settings file > config file network-specific section > config file default section //! Forced config > command line > read-write settings file > config file network-specific section > config file default section
//! //!
@@ -112,6 +115,10 @@ bool ReadSettings(const fs::path& path, std::map<std::string, SettingsValue>& va
break; break;
} }
} }
// Remove auto-generated warning comment from the accessible settings.
values.erase(SETTINGS_WARN_MSG_KEY);
return errors.empty(); return errors.empty();
} }
@@ -120,12 +127,9 @@ bool WriteSettings(const fs::path& path,
std::vector<std::string>& errors) std::vector<std::string>& errors)
{ {
SettingsValue out(SettingsValue::VOBJ); SettingsValue out(SettingsValue::VOBJ);
// Add auto-generated warning comment only if it does not exist // Add auto-generated warning comment
if (!values.contains("_warning_")) { out.pushKV(SETTINGS_WARN_MSG_KEY, strprintf("This file is automatically generated and updated by %s. Please do not edit this file while the node "
out.pushKV("_warning_", strprintf("This file is automatically generated and updated by %s. Please do not edit this file while the node " "is running, as any changes might be ignored or overwritten.", PACKAGE_NAME));
"is running, as any changes might be ignored or overwritten.",
PACKAGE_NAME));
}
// Push settings values // Push settings values
for (const auto& value : values) { for (const auto& value : values) {
out.pushKVEnd(value.first, value.second); out.pushKVEnd(value.first, value.second);