aboutsummaryrefslogtreecommitdiff
path: root/src/util/system.cpp
diff options
context:
space:
mode:
authorRyan Ofsky <ryan@ofsky.org>2022-02-09 17:49:42 -0500
committerRyan Ofsky <ryan@ofsky.org>2022-03-02 06:09:27 -0500
commit687e655ae2970f2f13aca0267c7de86dc69be763 (patch)
treeeb8b47e8253d573200690f8a0951a29e083c0192 /src/util/system.cpp
parent08bcfa27675da5c65e4c9eab7e7764eab0599298 (diff)
downloadbitcoin-687e655ae2970f2f13aca0267c7de86dc69be763.tar.xz
util: Add GetPathArg default path argument
Let GetPathArg method be used more places for path arguments that have default values, like "-settings" and BITCOIN_SETTINGS_FILENAME in the next commit. Also: - Fix negated argument handling. Return path{} not path{"0"} when path argument is negated. - Add new tests for default and negated cases - Move GetPathArg() method declaration next to GetArg() declarations. The two methods are close substitutes for each other, so this should help keep them consistent and make them more discoverable.
Diffstat (limited to 'src/util/system.cpp')
-rw-r--r--src/util/system.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/util/system.cpp b/src/util/system.cpp
index aa9122106b..af5a511a78 100644
--- a/src/util/system.cpp
+++ b/src/util/system.cpp
@@ -387,9 +387,12 @@ std::optional<unsigned int> ArgsManager::GetArgFlags(const std::string& name) co
return std::nullopt;
}
-fs::path ArgsManager::GetPathArg(std::string pathlike_arg) const
+fs::path ArgsManager::GetPathArg(std::string arg, const fs::path& default_value) const
{
- auto result = fs::PathFromString(GetArg(pathlike_arg, "")).lexically_normal();
+ if (IsArgNegated(arg)) return fs::path{};
+ std::string path_str = GetArg(arg, "");
+ if (path_str.empty()) return default_value;
+ fs::path result = fs::PathFromString(path_str).lexically_normal();
// Remove trailing slash, if present.
return result.has_filename() ? result : result.parent_path();
}