mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-20 07:09:15 +01:00
Add <datadir>/settings.json persistent settings storage.
Persistent settings are used in followup PRs #15936 to unify gui settings between bitcoin-qt and bitcoind, and #15937 to add a load_on_startup flag to the loadwallet RPC and maintain a dynamic list of wallets that should be loaded on startup that also can be shared between bitcoind and bitcoin-qt.
This commit is contained in:
@@ -13,12 +13,13 @@ namespace {
|
||||
enum class Source {
|
||||
FORCED,
|
||||
COMMAND_LINE,
|
||||
RW_SETTINGS,
|
||||
CONFIG_FILE_NETWORK_SECTION,
|
||||
CONFIG_FILE_DEFAULT_SECTION
|
||||
};
|
||||
|
||||
//! Merge settings from multiple sources in precedence order:
|
||||
//! Forced config > command line > 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
|
||||
//!
|
||||
//! This function is provided with a callback function fn that contains
|
||||
//! specific logic for how to merge the sources.
|
||||
@@ -33,6 +34,10 @@ static void MergeSettings(const Settings& settings, const std::string& section,
|
||||
if (auto* values = FindKey(settings.command_line_options, name)) {
|
||||
fn(SettingsSpan(*values), Source::COMMAND_LINE);
|
||||
}
|
||||
// Merge in the read-write settings
|
||||
if (const SettingsValue* value = FindKey(settings.rw_settings, name)) {
|
||||
fn(SettingsSpan(*value), Source::RW_SETTINGS);
|
||||
}
|
||||
// Merge in the network-specific section of the config file
|
||||
if (!section.empty()) {
|
||||
if (auto* map = FindKey(settings.ro_config, section)) {
|
||||
|
||||
Reference in New Issue
Block a user