From f9fdcec7e932843a91ddf7f377e00bd2a6efb82a Mon Sep 17 00:00:00 2001 From: Ryan Ofsky Date: Mon, 16 May 2022 14:37:00 -0400 Subject: settings: Add resetSettings() method Allows the GUI to clear settings.json file and save settings.json.bak file when GUI "Reset Options" button is pressed or -resetguisettings command line option is used. (GUI code already backs up and resets the "guisettings.ini" file this way, so this just makes the same behavior possible for "settings.json") --- src/util/system.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/util/system.cpp') diff --git a/src/util/system.cpp b/src/util/system.cpp index 87d3be9d23..fa2e564791 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -526,12 +526,15 @@ bool ArgsManager::InitSettings(std::string& error) return true; } -bool ArgsManager::GetSettingsPath(fs::path* filepath, bool temp) const +bool ArgsManager::GetSettingsPath(fs::path* filepath, bool temp, bool backup) const { fs::path settings = GetPathArg("-settings", fs::path{BITCOIN_SETTINGS_FILENAME}); if (settings.empty()) { return false; } + if (backup) { + settings += ".bak"; + } if (filepath) { *filepath = fsbridge::AbsPathJoin(GetDataDirNet(), temp ? settings + ".tmp" : settings); } @@ -572,10 +575,10 @@ bool ArgsManager::ReadSettingsFile(std::vector* errors) return true; } -bool ArgsManager::WriteSettingsFile(std::vector* errors) const +bool ArgsManager::WriteSettingsFile(std::vector* errors, bool backup) const { fs::path path, path_tmp; - if (!GetSettingsPath(&path, /* temp= */ false) || !GetSettingsPath(&path_tmp, /* temp= */ true)) { + if (!GetSettingsPath(&path, /*temp=*/false, backup) || !GetSettingsPath(&path_tmp, /*temp=*/true, backup)) { throw std::logic_error("Attempt to write settings file when dynamic settings are disabled."); } -- cgit v1.2.3