One place less to worry about thread safety. Also combine wildmatch
and iwildmatch into one.
Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
---
test-wildmatch.c | 4 ++--
wildmatch.c | 23 ++-
wildmatch.h | 3 +--
3 files changed, 9 insertions(+), 21 deletions(-)
diff --git a/test-wildmatch.c b/test-wildmatch.c
index 08962d5..5c18cf8 100644
--- a/test-wildmatch.c
+++ b/test-wildmatch.c
@@ -4,9 +4,9 @@
int main(int argc, char **argv)
{
if (!strcmp(argv[1], wildmatch))
- return wildmatch(argv[3], argv[2]) ? 0 : 1;
+ return wildmatch(argv[3], argv[2], 0) ? 0 : 1;
else if (!strcmp(argv[1], iwildmatch))
- return iwildmatch(argv[3], argv[2]) ? 0 : 1;
+ return wildmatch(argv[3], argv[2], FNM_CASEFOLD) ? 0 : 1;
else if (!strcmp(argv[1], fnmatch))
return fnmatch(argv[3], argv[2], FNM_PATHNAME);
else
diff --git a/wildmatch.c b/wildmatch.c
index 7b64a6b..2382873 100644
--- a/wildmatch.c
+++ b/wildmatch.c
@@ -11,8 +11,8 @@
#include stddef.h
#include ctype.h
-#include string.h
+#include cache.h
#include wildmatch.h
typedef unsigned char uchar;
@@ -59,11 +59,9 @@ typedef unsigned char uchar;
#define ISUPPER(c) (ISASCII(c) isupper(c))
#define ISXDIGIT(c) (ISASCII(c) isxdigit(c))
-static int force_lower_case = 0;
-
/* Match pattern p against the a virtually-joined string consisting
* of text and any strings in array a. */
-static int dowild(const uchar *p, const uchar *text)
+static int dowild(const uchar *p, const uchar *text, int force_lower_case)
{
uchar p_ch;
@@ -107,7 +105,7 @@ static int dowild(const uchar *p, const uchar *text)
while (1) {
if (t_ch == '\0')
break;
- if ((matched = dowild(p, text)) != FALSE) {
+ if ((matched = dowild(p, text, force_lower_case)) != FALSE) {
if (!special || matched != ABORT_TO_STARSTAR)
return matched;
} else if (!special t_ch == '/')
@@ -215,17 +213,8 @@ static int dowild(const uchar *p, const uchar *text)
}
/* Match the pattern against the text string. */
-int wildmatch(const char *pattern, const char *text)
-{
-return dowild((const uchar*)pattern, (const uchar*)text) == TRUE;
-}
-
-/* Match the pattern against the forced-to-lower-case text string. */
-int iwildmatch(const char *pattern, const char *text)
+int wildmatch(const char *pattern, const char *text, int flags)
{
-int ret;
-force_lower_case = 1;
-ret = dowild((const uchar*)pattern, (const uchar*)text) == TRUE;
-force_lower_case = 0;
-return ret;
+return dowild((const uchar*)pattern, (const uchar*)text,
+ flags FNM_CASEFOLD ? 1 : 0) == TRUE;
}
diff --git a/wildmatch.h b/wildmatch.h
index 562faa3..e974f9a 100644
--- a/wildmatch.h
+++ b/wildmatch.h
@@ -1,4 +1,3 @@
/* wildmatch.h */
-int wildmatch(const char *pattern, const char *text);
-int iwildmatch(const char *pattern, const char *text);
+int wildmatch(const char *pattern, const char *text, int flags);
--
1.8.0.rc0.29.g1fdd78f
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html