+++ /dev/null
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#include "rgw_string.h"
-
-static bool char_eq(char c1, char c2)
-{
- return c1 == c2;
-}
-
-static bool ci_char_eq(char c1, char c2)
-{
- return tolower(c1) == tolower(c2);
-}
-
-bool match_wildcards(boost::string_view pattern, boost::string_view input,
- uint32_t flags)
-{
- const auto eq = (flags & MATCH_CASE_INSENSITIVE) ? &ci_char_eq : &char_eq;
-
- auto it1 = pattern.begin();
- auto it2 = input.begin();
- while (true) {
- if (it1 == pattern.end())
- return it2 == input.end();
- if (*it1 == '*') {
- if (it1 + 1 == pattern.end())
- return true;
- if (it2 == input.end() || eq(*(it1 + 1), *it2))
- ++it1;
- else
- ++it2;
- continue;
- }
- if (it2 == input.end())
- return false;
- if (*it1 == '?' || eq(*it1, *it2)) {
- ++it1;
- ++it2;
- continue;
- }
- return false;
- }
- return false;
-}