Skip to content

Commit

Permalink
merge bitcoin#16097: Replace IsArgKnown() with FlagsOfKnownArg()
Browse files Browse the repository at this point in the history
  • Loading branch information
kwvg committed Nov 11, 2021
1 parent aa48c2f commit b819bbd
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 21 deletions.
39 changes: 20 additions & 19 deletions src/util/system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,7 @@ bool ArgsManager::ParseParameters(int argc, const char* const argv[], std::strin

for (int i = 1; i < argc; i++) {
std::string key(argv[i]);
if (key == "-") break; //dash-tx using stdin

#ifdef MAC_OSX
// At the first time when a user gets the "App downloaded from the
Expand Down Expand Up @@ -428,15 +429,13 @@ bool ArgsManager::ParseParameters(int argc, const char* const argv[], std::strin
if (key.length() > 1 && key[1] == '-')
key.erase(0, 1);

// Check that the arg is known
if (!(IsSwitchChar(key[0]) && key.size() == 1)) {
if (!IsArgKnown(key)) {
error = strprintf("Invalid parameter %s", key.c_str());
return false;
}
const unsigned int flags = FlagsOfKnownArg(key);
if (flags) {
InterpretOption(key, val, m_override_args);
} else {
error = strprintf("Invalid parameter %s", key.c_str());
return false;
}

InterpretOption(key, val, m_override_args);
}

// we do not allow -includeconf from command line, so we clear it here
Expand All @@ -452,7 +451,7 @@ bool ArgsManager::ParseParameters(int argc, const char* const argv[], std::strin
return true;
}

bool ArgsManager::IsArgKnown(const std::string& key) const
unsigned int ArgsManager::FlagsOfKnownArg(const std::string& key) const
{
assert(key[0] == '-');

Expand All @@ -470,9 +469,12 @@ bool ArgsManager::IsArgKnown(const std::string& key) const

LOCK(cs_args);
for (const auto& arg_map : m_available_args) {
if (arg_map.second.count(base_arg_name)) return true;
const auto search = arg_map.second.find(base_arg_name);
if (search != arg_map.second.end()) {
return search->second.m_flags;
}
}
return false;
return ArgsManager::NONE;
}

std::vector<std::string> ArgsManager::GetArgs(const std::string& strArg) const
Expand Down Expand Up @@ -905,18 +907,17 @@ bool ArgsManager::ReadConfigStream(std::istream& stream, const std::string& file
}
for (const std::pair<std::string, std::string>& option : options) {
const std::string strKey = std::string("-") + option.first;
// Check that the arg is known
if (!IsArgKnown(strKey)) {
if (!ignore_invalid_keys) {
const unsigned int flags = FlagsOfKnownArg(strKey);
if (flags) {
InterpretOption(strKey, option.second, m_config_args);
} else {
if (ignore_invalid_keys) {
LogPrintf("Ignoring unknown configuration value %s\n", option.first);
} else {
error = strprintf("Invalid configuration value %s", option.first.c_str());
return false;
} else {
LogPrintf("Ignoring unknown configuration value %s\n", option.first);
continue;
}
}

InterpretOption(strKey, option.second, m_config_args);
}
return true;
}
Expand Down
5 changes: 3 additions & 2 deletions src/util/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -341,9 +341,10 @@ class ArgsManager
std::string GetHelpMessage() const;

/**
* Check whether we know of this arg
* Return Flags for known arg.
* Return ArgsManager::NONE for unknown arg.
*/
bool IsArgKnown(const std::string& key) const;
unsigned int FlagsOfKnownArg(const std::string& key) const;
};

extern ArgsManager gArgs;
Expand Down

0 comments on commit b819bbd

Please sign in to comment.