author | Mike Sullivan <Mike.Sullivan@Oracle.COM> |
Mon, 11 Mar 2013 10:38:09 -0700 | |
branch | s11-update |
changeset 2520 | ceec631e74d1 |
parent 472 | b4bf6ad34a2d |
permissions | -rw-r--r-- |
472
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
1 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
2 |
Fix regressions in fnmatch rewrite. |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
3 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
4 |
https://bugzilla.redhat.com/show_bug.cgi?id=706203 |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
5 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
6 |
http://svn.apache.org/viewvc/apr/apr/branches/1.4.x/strings/apr_fnmatch.c?r1=1098902&r2=1124999 |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
7 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
8 |
--- strings/apr_fnmatch.c.fnmatch |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
9 |
+++ strings/apr_fnmatch.c |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
10 |
@@ -90,10 +90,13 @@ static APR_INLINE int fnmatch_ch(const c |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
11 |
if (negate) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
12 |
++*pattern; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
13 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
14 |
+ /* ']' is an ordinary character at the start of the range pattern */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
15 |
+ if (**pattern == ']') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
16 |
+ goto leadingclosebrace; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
17 |
+ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
18 |
while (**pattern) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
19 |
{ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
20 |
- /* ']' is an ordinary character at the start of the range pattern */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
21 |
- if ((**pattern == ']') && (*pattern > mismatch)) { |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
22 |
+ if (**pattern == ']') { |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
23 |
++*pattern; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
24 |
/* XXX: Fix for MBCS character width */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
25 |
++*string; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
26 |
@@ -112,17 +115,23 @@ static APR_INLINE int fnmatch_ch(const c |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
27 |
if (slash && (**pattern == '/')) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
28 |
break; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
29 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
30 |
- /* Look at only well-formed range patterns; ']' is allowed only if escaped, |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
31 |
- * while '/' is not allowed at all in FNM_PATHNAME mode. |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
32 |
+leadingclosebrace: |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
33 |
+ /* Look at only well-formed range patterns; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
34 |
+ * "x-]" is not allowed unless escaped ("x-\]") |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
35 |
+ * XXX: Fix for locale/MBCS character width |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
36 |
*/ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
37 |
- /* XXX: Fix for locale/MBCS character width */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
38 |
- if (((*pattern)[1] == '-') && (*pattern)[2] |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
39 |
- && ((escape && ((*pattern)[2] != '\\')) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
40 |
- ? (((*pattern)[2] != ']') && (!slash || ((*pattern)[2] != '/'))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
41 |
- : (((*pattern)[3]) && (!slash || ((*pattern)[3] != '/'))))) { |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
42 |
+ if (((*pattern)[1] == '-') && ((*pattern)[2] != ']')) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
43 |
+ { |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
44 |
startch = *pattern; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
45 |
*pattern += (escape && ((*pattern)[2] == '\\')) ? 3 : 2; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
46 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
47 |
+ /* NOT a properly balanced [expr] pattern, EOS terminated |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
48 |
+ * or ranges containing a slash in FNM_PATHNAME mode pattern |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
49 |
+ * fall out to to the rewind and test '[' literal code path |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
50 |
+ */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
51 |
+ if (!**pattern || (slash && (**pattern == '/'))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
52 |
+ break; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
53 |
+ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
54 |
/* XXX: handle locale/MBCS comparison, advance by MBCS char width */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
55 |
if ((**string >= *startch) && (**string <= **pattern)) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
56 |
result = 0; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
57 |
@@ -146,7 +155,9 @@ static APR_INLINE int fnmatch_ch(const c |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
58 |
++*pattern; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
59 |
} |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
60 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
61 |
- /* NOT a properly balanced [expr] pattern; Rewind to test '[' literal */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
62 |
+ /* NOT a properly balanced [expr] pattern; Rewind |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
63 |
+ * and reset result to test '[' literal |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
64 |
+ */ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
65 |
*pattern = mismatch; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
66 |
result = APR_FNM_NOMATCH; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
67 |
} |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
68 |
@@ -196,9 +207,13 @@ APR_DECLARE(int) apr_fnmatch(const char |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
69 |
const char *mismatch = NULL; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
70 |
int matchlen = 0; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
71 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
72 |
- while (*pattern) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
73 |
+ if (*pattern == '*') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
74 |
+ goto firstsegment; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
75 |
+ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
76 |
+ while (*pattern && *string) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
77 |
{ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
78 |
- /* Match balanced slashes, starting a new segment pattern |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
79 |
+ /* Pre-decode "\/" which has no special significance, and |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
80 |
+ * match balanced slashes, starting a new segment pattern |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
81 |
*/ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
82 |
if (slash && escape && (*pattern == '\\') && (pattern[1] == '/')) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
83 |
++pattern; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
84 |
@@ -207,6 +222,7 @@ APR_DECLARE(int) apr_fnmatch(const char |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
85 |
++string; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
86 |
} |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
87 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
88 |
+firstsegment: |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
89 |
/* At the beginning of each segment, validate leading period behavior. |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
90 |
*/ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
91 |
if ((flags & APR_FNM_PERIOD) && (*string == '.')) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
92 |
@@ -235,12 +251,17 @@ APR_DECLARE(int) apr_fnmatch(const char |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
93 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
94 |
/* Allow pattern '*' to be consumed even with no remaining string to match |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
95 |
*/ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
96 |
- while (*pattern && !(slash && ((*pattern == '/') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
97 |
- || (escape && (*pattern == '\\') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
98 |
- && (pattern[1] == '/')))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
99 |
- && ((string < strendseg) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
100 |
- || ((*pattern == '*') && (string == strendseg)))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
101 |
+ while (*pattern) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
102 |
{ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
103 |
+ if ((string > strendseg) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
104 |
+ || ((string == strendseg) && (*pattern != '*'))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
105 |
+ break; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
106 |
+ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
107 |
+ if (slash && ((*pattern == '/') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
108 |
+ || (escape && (*pattern == '\\') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
109 |
+ && (pattern[1] == '/')))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
110 |
+ break; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
111 |
+ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
112 |
/* Reduce groups of '*' and '?' to n '?' matches |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
113 |
* followed by one '*' test for simplicity |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
114 |
*/ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
115 |
@@ -324,9 +345,10 @@ APR_DECLARE(int) apr_fnmatch(const char |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
116 |
if (*pattern == '*') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
117 |
break; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
118 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
119 |
- if (slash && ((*string == '/') || (*pattern == '/') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
120 |
- || (escape && (*pattern == '\\') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
121 |
- && (pattern[1] == '/')))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
122 |
+ if (slash && ((*string == '/') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
123 |
+ || (*pattern == '/') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
124 |
+ || (escape && (*pattern == '\\') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
125 |
+ && (pattern[1] == '/')))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
126 |
break; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
127 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
128 |
/* Compare ch's (the pattern is advanced over "\/" to the '/', |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
129 |
@@ -352,18 +374,18 @@ APR_DECLARE(int) apr_fnmatch(const char |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
130 |
} |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
131 |
} |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
132 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
133 |
- if (*string && (!slash || (*string != '/'))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
134 |
+ if (*string && !(slash && (*string == '/'))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
135 |
return APR_FNM_NOMATCH; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
136 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
137 |
- if (*pattern && (!slash || ((*pattern != '/') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
138 |
- && (!escape || (*pattern != '\\') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
139 |
- || (pattern[1] != '/'))))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
140 |
+ if (*pattern && !(slash && ((*pattern == '/') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
141 |
+ || (escape && (*pattern == '\\') |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
142 |
+ && (pattern[1] == '/'))))) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
143 |
return APR_FNM_NOMATCH; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
144 |
} |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
145 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
146 |
- /* pattern is at EOS; if string is also, declare success |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
147 |
+ /* Where both pattern and string are at EOS, declare success |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
148 |
*/ |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
149 |
- if (!*string) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
150 |
+ if (!*string && !*pattern) |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
151 |
return 0; |
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
152 |
|
b4bf6ad34a2d
7049240 Problem with utility/apache
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff
changeset
|
153 |
/* pattern didn't match to the end of string */ |