case TokenID::StringNotEqualsIgnoreCase:
return orrible(std::not2(ci_equal_to()), s, vals);
- // Implement actual StringLike with wildcarding later
case TokenID::StringLike:
- return orrible(std::equal_to<std::string>(), s, vals);
+ return orrible(string_like(), s, vals);
+
case TokenID::StringNotLike:
- return orrible(std::not2(std::equal_to<std::string>()),
- s, vals);
+ return orrible(std::not2(string_like()), s, vals);
// Numeric
case TokenID::NumericEquals:
#include "rapidjson/error/error.h"
#include "rapidjson/error/en.h"
-#include "fnmatch.h"
-
#include "rgw_acl.h"
#include "rgw_basic_types.h"
#include "rgw_iam_policy_keywords.h"
+#include "rgw_string.h"
#include "include/assert.h" // razzin' frazzin' ...grrr.
}
};
+ struct string_like : public std::binary_function<const std::string,
+ const std::string,
+ bool> {
+ bool operator ()(const std::string& input,
+ const std::string& pattern) const {
+ return match_wildcards(pattern, input, 0);
+ }
+ };
template<typename F>
static bool orrible(F&& f, const std::string& c,