Remove unnecessary template and optional use

This commit is contained in:
Gunter Labes 2025-01-19 19:56:08 +01:00
parent bb07f533ed
commit fa238045b1
No known key found for this signature in database
GPG Key ID: C0C7B971CC910216

View File

@ -231,13 +231,15 @@ bool have_wml(const utils::optional_reference<const config>& cfg)
* *
* Null WML objects are skipped. * Null WML objects are skipped.
*/ */
template<typename... Vals> std::vector<std::string> multi_find_illegal_names(const std::initializer_list<optional_const_config>& cfgs)
utils::optional<std::vector<std::string>> multi_find_illegal_names(const Vals&... args)
{ {
std::vector<std::string> names; std::vector<std::string> names;
((args && check_names_legal(*args, &names)), ...); for(auto cfg : cfgs) {
if(cfg) {
return !names.empty() ? utils::optional(names) : utils::nullopt; check_names_legal(*cfg, &names);
}
}
return names;
} }
/** /**
@ -245,13 +247,15 @@ utils::optional<std::vector<std::string>> multi_find_illegal_names(const Vals&..
* *
* Null WML objects are skipped. * Null WML objects are skipped.
*/ */
template<typename... Vals> std::vector<std::string> multi_find_case_conflicts(const std::initializer_list<optional_const_config>& cfgs)
utils::optional<std::vector<std::string>> multi_find_case_conflicts(const Vals&... args)
{ {
std::vector<std::string> names; std::vector<std::string> names;
((args && check_case_insensitive_duplicates(*args, &names)), ...); for(auto cfg : cfgs) {
if(cfg) {
return !names.empty() ? utils::optional(names) : utils::nullopt; check_case_insensitive_duplicates(*cfg, &names);
}
}
return names;
} }
/** /**
@ -1469,15 +1473,15 @@ ADDON_CHECK_STATUS server::validate_addon(const server::request& req, config*& e
return ADDON_CHECK_STATUS::NO_EMAIL; return ADDON_CHECK_STATUS::NO_EMAIL;
} }
if(const auto badnames = multi_find_illegal_names(data, addlist, removelist)) { if(std::vector<std::string> badnames = multi_find_illegal_names({data, addlist, removelist}); !badnames.empty()) {
error_data = utils::join(*badnames, "\n"); error_data = utils::join(badnames, "\n");
LOG_CS << "Validation error: invalid filenames in add-on pack (" << badnames->size() << " entries)"; LOG_CS << "Validation error: invalid filenames in add-on pack (" << badnames.size() << " entries)";
return ADDON_CHECK_STATUS::ILLEGAL_FILENAME; return ADDON_CHECK_STATUS::ILLEGAL_FILENAME;
} }
if(const auto badnames = multi_find_case_conflicts(data, addlist, removelist)) { if(std::vector<std::string> badnames = multi_find_case_conflicts({data, addlist, removelist}); !badnames.empty()) {
error_data = utils::join(*badnames, "\n"); error_data = utils::join(badnames, "\n");
LOG_CS << "Validation error: case conflicts in add-on pack (" << badnames->size() << " entries)"; LOG_CS << "Validation error: case conflicts in add-on pack (" << badnames.size() << " entries)";
return ADDON_CHECK_STATUS::FILENAME_CASE_CONFLICT; return ADDON_CHECK_STATUS::FILENAME_CASE_CONFLICT;
} }