[BACK]Return to fnmatch.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libc / gen

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libc/gen/fnmatch.c between version 1.25 and 1.26

version 1.25, 2012/03/25 16:31:23 version 1.26, 2014/10/12 22:32:33
Line 73  foldcase(int ch, int flags)
Line 73  foldcase(int ch, int flags)
 static const char *  static const char *
 rangematch(const char *pattern, int test, int flags)  rangematch(const char *pattern, int test, int flags)
 {  {
         int negate, ok;          int negate, ok, need;
         char c, c2;          char c, c2;
   
         _DIAGASSERT(pattern != NULL);          _DIAGASSERT(pattern != NULL);
Line 88  rangematch(const char *pattern, int test
Line 88  rangematch(const char *pattern, int test
         if ((negate = (*pattern == '!' || *pattern == '^')) != 0)          if ((negate = (*pattern == '!' || *pattern == '^')) != 0)
                 ++pattern;                  ++pattern;
   
         for (ok = 0; (c = FOLDCASE(*pattern++, flags)) != ']';) {          need = 1;
           for (ok = 0; (c = FOLDCASE(*pattern++, flags)) != ']' || need;) {
                   need = 0;
                   if (c == '/')
                           return (void *)-1;
                 if (c == '\\' && !(flags & FNM_NOESCAPE))                  if (c == '\\' && !(flags & FNM_NOESCAPE))
                         c = FOLDCASE(*pattern++, flags);                          c = FOLDCASE(*pattern++, flags);
                 if (c == EOS)                  if (c == EOS)
Line 113  rangematch(const char *pattern, int test
Line 117  rangematch(const char *pattern, int test
 static int  static int
 fnmatchx(const char *pattern, const char *string, int flags, size_t recursion)  fnmatchx(const char *pattern, const char *string, int flags, size_t recursion)
 {  {
         const char *stringstart;          const char *stringstart, *r;
         char c, test;          char c, test;
   
         _DIAGASSERT(pattern != NULL);          _DIAGASSERT(pattern != NULL);
Line 184  fnmatchx(const char *pattern, const char
Line 188  fnmatchx(const char *pattern, const char
                                 return FNM_NOMATCH;                                  return FNM_NOMATCH;
                         if (*string == '/' && flags & FNM_PATHNAME)                          if (*string == '/' && flags & FNM_PATHNAME)
                                 return FNM_NOMATCH;                                  return FNM_NOMATCH;
                         if ((pattern = rangematch(pattern,                          if ((r = rangematch(pattern,
                             FOLDCASE(*string, flags), flags)) == NULL)                              FOLDCASE(*string, flags), flags)) == NULL)
                                 return FNM_NOMATCH;                                  return FNM_NOMATCH;
                           if (r == (void *)-1) {
                                   if (*string != '[')
                                           return FNM_NOMATCH;
                           } else
                                   pattern = r;
                         ++string;                          ++string;
                         break;                          break;
                 case '\\':                  case '\\':

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

CVSweb <webmaster@jp.NetBSD.org>