Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
wildmatch: make dowild() take arbitrary flags
author
Nguyễn Thái Ngọc Duy
<pclouds@gmail.com>
Tue, 1 Jan 2013 02:44:06 +0000
(09:44 +0700)
committer
Junio C Hamano
<gitster@pobox.com>
Tue, 1 Jan 2013 23:32:36 +0000
(15:32 -0800)
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
wildmatch.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
9b3497c
)
diff --git
a/wildmatch.c
b/wildmatch.c
index 2a655fa7d4185471ea5ff791a1a441422ebd87f9..1b5bbacf1afc5689864f67a99a66555e5730ef56 100644
(file)
--- a/
wildmatch.c
+++ b/
wildmatch.c
@@
-52,7
+52,7
@@
typedef unsigned char uchar;
#define ISXDIGIT(c) (ISASCII(c) && isxdigit(c))
/* Match pattern "p" against "text" */
#define ISXDIGIT(c) (ISASCII(c) && isxdigit(c))
/* Match pattern "p" against "text" */
-static int dowild(const uchar *p, const uchar *text,
int force_lower_case
)
+static int dowild(const uchar *p, const uchar *text,
unsigned int flags
)
{
uchar p_ch;
const uchar *pattern = p;
{
uchar p_ch;
const uchar *pattern = p;
@@
-62,9
+62,9
@@
static int dowild(const uchar *p, const uchar *text, int force_lower_case)
uchar t_ch, prev_ch;
if ((t_ch = *text) == '\0' && p_ch != '*')
return WM_ABORT_ALL;
uchar t_ch, prev_ch;
if ((t_ch = *text) == '\0' && p_ch != '*')
return WM_ABORT_ALL;
- if (
force_lower_case
&& ISUPPER(t_ch))
+ if (
(flags & WM_CASEFOLD)
&& ISUPPER(t_ch))
t_ch = tolower(t_ch);
t_ch = tolower(t_ch);
- if (
force_lower_case
&& ISUPPER(p_ch))
+ if (
(flags & WM_CASEFOLD)
&& ISUPPER(p_ch))
p_ch = tolower(p_ch);
switch (p_ch) {
case '\\':
p_ch = tolower(p_ch);
switch (p_ch) {
case '\\':
@@
-98,7
+98,7
@@
static int dowild(const uchar *p, const uchar *text, int force_lower_case)
* both foo/bar and foo/a/bar.
*/
if (p[0] == '/' &&
* both foo/bar and foo/a/bar.
*/
if (p[0] == '/' &&
- dowild(p + 1, text, f
orce_lower_case
) == WM_MATCH)
+ dowild(p + 1, text, f
lags
) == WM_MATCH)
return WM_MATCH;
match_slash = 1;
} else
return WM_MATCH;
match_slash = 1;
} else
@@
-117,7
+117,7
@@
static int dowild(const uchar *p, const uchar *text, int force_lower_case)
while (1) {
if (t_ch == '\0')
break;
while (1) {
if (t_ch == '\0')
break;
- if ((matched = dowild(p, text,
force_lower_case
)) != WM_NOMATCH) {
+ if ((matched = dowild(p, text,
flags
)) != WM_NOMATCH) {
if (!match_slash || matched != WM_ABORT_TO_STARSTAR)
return matched;
} else if (!match_slash && t_ch == '/')
if (!match_slash || matched != WM_ABORT_TO_STARSTAR)
return matched;
} else if (!match_slash && t_ch == '/')
@@
-228,6
+228,5
@@
static int dowild(const uchar *p, const uchar *text, int force_lower_case)
int wildmatch(const char *pattern, const char *text,
unsigned int flags, struct wildopts *wo)
{
int wildmatch(const char *pattern, const char *text,
unsigned int flags, struct wildopts *wo)
{
- return dowild((const uchar*)pattern, (const uchar*)text,
- flags & WM_CASEFOLD ? 1 :0);
+ return dowild((const uchar*)pattern, (const uchar*)text, flags);
}
}