summaryrefslogtreecommitdiff
path: root/wildmatch.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2012-10-15 06:25:57 (GMT)
committerJunio C Hamano <gitster@pobox.com>2012-10-15 21:58:18 (GMT)
commit3ae5396cf719000039c5d0d35f9bf934f647b030 (patch)
treea12424227ae05d6db8c52c405b06ea7c5fcc09f9 /wildmatch.c
parentf1cf7b798305787d5d1272c13ead207e3e04a183 (diff)
downloadgit-3ae5396cf719000039c5d0d35f9bf934f647b030.zip
git-3ae5396cf719000039c5d0d35f9bf934f647b030.tar.gz
git-3ae5396cf719000039c5d0d35f9bf934f647b030.tar.bz2
wildmatch: make wildmatch's return value compatible with fnmatch
wildmatch returns non-zero if matched, zero otherwise. This patch makes it return zero if matches, non-zero otherwise, like fnmatch(). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'wildmatch.c')
-rw-r--r--wildmatch.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/wildmatch.c b/wildmatch.c
index ac29471..6d992d3 100644
--- a/wildmatch.c
+++ b/wildmatch.c
@@ -20,6 +20,9 @@ typedef unsigned char uchar;
#define FALSE 0
#define TRUE 1
+
+#define NOMATCH 1
+#define MATCH 0
#define ABORT_ALL -1
#define ABORT_TO_STARSTAR -2
@@ -78,12 +81,12 @@ static int dowild(const uchar *p, const uchar *text)
/* FALLTHROUGH */
default:
if (t_ch != p_ch)
- return FALSE;
+ return NOMATCH;
continue;
case '?':
/* Match anything but '/'. */
if (t_ch == '/')
- return FALSE;
+ return NOMATCH;
continue;
case '*':
if (*++p == '*') {
@@ -96,14 +99,14 @@ static int dowild(const uchar *p, const uchar *text)
* only if there are no more slash characters. */
if (!special) {
if (strchr((char*)text, '/') != NULL)
- return FALSE;
+ return NOMATCH;
}
- return TRUE;
+ return MATCH;
}
while (1) {
if (t_ch == '\0')
break;
- if ((matched = dowild(p, text)) != FALSE) {
+ if ((matched = dowild(p, text)) != NOMATCH) {
if (!special || matched != ABORT_TO_STARSTAR)
return matched;
} else if (!special && t_ch == '/')
@@ -202,18 +205,18 @@ static int dowild(const uchar *p, const uchar *text)
matched = TRUE;
} while (prev_ch = p_ch, (p_ch = *++p) != ']');
if (matched == special || t_ch == '/')
- return FALSE;
+ return NOMATCH;
continue;
}
}
- return *text ? FALSE : TRUE;
+ return *text ? NOMATCH : MATCH;
}
/* Match the "pattern" against the "text" string. */
int wildmatch(const char *pattern, const char *text)
{
- return dowild((const uchar*)pattern, (const uchar*)text) == TRUE;
+ return dowild((const uchar*)pattern, (const uchar*)text);
}
/* Match the "pattern" against the forced-to-lower-case "text" string. */
@@ -221,7 +224,7 @@ int iwildmatch(const char *pattern, const char *text)
{
int ret;
force_lower_case = 1;
- ret = dowild((const uchar*)pattern, (const uchar*)text) == TRUE;
+ ret = dowild((const uchar*)pattern, (const uchar*)text);
force_lower_case = 0;
return ret;
}