File tree Expand file tree Collapse file tree 2 files changed +17
-7
lines changed Expand file tree Collapse file tree 2 files changed +17
-7
lines changed Original file line number Diff line number Diff line change 1
1
#include " glob.h"
2
2
3
+ #include < cctype>
3
4
#include < cstdint>
4
5
5
6
namespace datadog {
@@ -18,8 +19,11 @@ bool glob_match(StringView pattern, StringView subject) {
18
19
Index next_p = 0 ; // next [p]attern index
19
20
Index next_s = 0 ; // next [s]ubject index
20
21
21
- while (p < pattern.size () || s < subject.size ()) {
22
- if (p < pattern.size ()) {
22
+ const size_t p_size = pattern.size ();
23
+ const size_t s_size = subject.size ();
24
+
25
+ while (p < p_size || s < s_size) {
26
+ if (p < p_size) {
23
27
const char pattern_char = pattern[p];
24
28
switch (pattern_char) {
25
29
case ' *' :
@@ -30,22 +34,22 @@ bool glob_match(StringView pattern, StringView subject) {
30
34
++p;
31
35
continue ;
32
36
case ' ?' :
33
- if (s < subject. size () ) {
37
+ if (s < s_size ) {
34
38
++p;
35
39
++s;
36
40
continue ;
37
41
}
38
42
break ;
39
43
default :
40
- if (s < subject. size () && subject[s] == pattern_char) {
44
+ if (s < s_size && tolower ( subject[s]) == tolower ( pattern_char) ) {
41
45
++p;
42
46
++s;
43
47
continue ;
44
48
}
45
49
}
46
50
}
47
51
// Mismatch. Maybe restart.
48
- if (0 < next_s && next_s <= subject. size () ) {
52
+ if (0 < next_s && next_s <= s_size ) {
49
53
p = next_p;
50
54
s = next_s;
51
55
continue ;
Original file line number Diff line number Diff line change 8
8
9
9
using namespace datadog ::tracing;
10
10
11
- TEST_CASE (" glob" ) {
11
+ TEST_CASE (" glob" , " [glob] " ) {
12
12
struct TestCase {
13
13
StringView pattern;
14
14
StringView subject;
@@ -42,7 +42,13 @@ TEST_CASE("glob") {
42
42
{" " , " " , true },
43
43
{" " , " a" , false },
44
44
{" *" , " " , true },
45
- {" ?" , " " , false }
45
+ {" ?" , " " , false },
46
+
47
+ // case sensitivity
48
+ {" true" , " TRUE" , true },
49
+ {" true" , " True" , true },
50
+ {" true" , " tRue" , true },
51
+ {" false" , " FALSE" , true }
46
52
}));
47
53
// clang-format on
48
54
You can’t perform that action at this time.
0 commit comments