[PATCH 1/3] wildmatch: make dowild() take arbitrary flags

2012-12-19 Thread Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
---
 wildmatch.c | 13 ++---
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/wildmatch.c b/wildmatch.c
index 3972e26..9586ed9 100644
--- a/wildmatch.c
+++ b/wildmatch.c
@@ -55,7 +55,7 @@ typedef unsigned char uchar;
 #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, int flags)
 {
uchar p_ch;
 
@@ -64,9 +64,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 ABORT_ALL;
-   if (force_lower_case  ISUPPER(t_ch))
+   if (flags  FNM_CASEFOLD  ISUPPER(t_ch))
t_ch = tolower(t_ch);
-   if (force_lower_case  ISUPPER(p_ch))
+   if (flags  FNM_CASEFOLD  ISUPPER(p_ch))
p_ch = tolower(p_ch);
switch (p_ch) {
case '\\':
@@ -100,7 +100,7 @@ static int dowild(const uchar *p, const uchar *text, int 
force_lower_case)
 * both foo/bar and foo/a/bar.
 */
if (p[0] == '/' 
-   dowild(p + 1, text, 
force_lower_case) == MATCH)
+   dowild(p + 1, text, flags) == MATCH)
return MATCH;
special = TRUE;
} else
@@ -119,7 +119,7 @@ static int dowild(const uchar *p, const uchar *text, int 
force_lower_case)
while (1) {
if (t_ch == '\0')
break;
-   if ((matched = dowild(p, text,  
force_lower_case)) != NOMATCH) {
+   if ((matched = dowild(p, text,  flags)) != 
NOMATCH) {
if (!special || matched != 
ABORT_TO_STARSTAR)
return matched;
} else if (!special  t_ch == '/')
@@ -229,6 +229,5 @@ static int dowild(const uchar *p, const uchar *text, int 
force_lower_case)
 /* Match the pattern against the text string. */
 int wildmatch(const char *pattern, const char *text, int flags)
 {
-   return dowild((const uchar*)pattern, (const uchar*)text,
- flags  FNM_CASEFOLD ? 1 :0);
+   return dowild((const uchar*)pattern, (const uchar*)text, flags);
 }
-- 
1.8.0.rc2.23.g1fb49df

--
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


Re: [PATCH 1/3] wildmatch: make dowild() take arbitrary flags

2012-12-19 Thread Junio C Hamano
Nguyễn Thái Ngọc Duy  pclo...@gmail.com writes:

 Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
 ---
  wildmatch.c | 13 ++---
  1 file changed, 6 insertions(+), 7 deletions(-)

 diff --git a/wildmatch.c b/wildmatch.c
 index 3972e26..9586ed9 100644
 --- a/wildmatch.c
 +++ b/wildmatch.c
 @@ -55,7 +55,7 @@ typedef unsigned char uchar;
  #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, int flags)

It may be better to declare a bitset like this unsigned.

  {
   uchar p_ch;
  
 @@ -64,9 +64,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 ABORT_ALL;
 - if (force_lower_case  ISUPPER(t_ch))
 + if (flags  FNM_CASEFOLD  ISUPPER(t_ch))

Please add parentheses around bitwise-AND that is used as a boolean,
i.e.

if ((flags  FNM_CASEFOLD)  ISUPPER(t_ch))

Less chance of confusion.
--
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