coar        98/06/28 07:43:19

  Modified:    src      CHANGES
               src/include fnmatch.h
               src/main fnmatch.c
  Log:
        ap_fnmatch() only did case-exact matching.  With the addition of
        the FNM_CASE_BLIND flag bit, it can now be told to ignore case.
        Considering the case-sensitivity issues cropping up on Win32,
        this seemed an appropriate addition even though nothing uses it yet.
  
  Reviewed by:  Dean Guadet
  
  Revision  Changes    Path
  1.936     +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.935
  retrieving revision 1.936
  diff -u -r1.935 -r1.936
  --- CHANGES   1998/06/27 17:58:38     1.935
  +++ CHANGES   1998/06/28 14:43:16     1.936
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.1
   
  +  *) Add a flag so ap_fnmatch() can be used for case-blind pattern matching.
  +     [Ken Coar, Dean Gaudet]
  +
     *) Win32: Don't collapse multiple slashes in PATH_INFO.
        [Ben Laurie, Bill Stoddard <[EMAIL PROTECTED]>] PR#2274
   
  
  
  
  1.6       +2 -0      apache-1.3/src/include/fnmatch.h
  
  Index: fnmatch.h
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/include/fnmatch.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- fnmatch.h 1998/05/03 17:31:08     1.5
  +++ fnmatch.h 1998/06/28 14:43:18     1.6
  @@ -49,6 +49,8 @@
   #define      FNM_NOESCAPE    0x01    /* Disable backslash escaping. */
   #define      FNM_PATHNAME    0x02    /* Slash must be matched by slash. */
   #define      FNM_PERIOD      0x04    /* Period must be matched by period. */
  +/* This flag is an Apache addition */
  +#define FNM_CASE_BLIND  0x08    /* Compare characters case-insensitively. */
   
   API_EXPORT(int) ap_fnmatch(const char *, const char *, int);
   
  
  
  
  1.11      +11 -3     apache-1.3/src/main/fnmatch.c
  
  Index: fnmatch.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/fnmatch.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- fnmatch.c 1998/06/20 13:12:36     1.10
  +++ fnmatch.c 1998/06/28 14:43:19     1.11
  @@ -140,9 +140,12 @@
            }
            /* FALLTHROUGH */
        default:
  -         if (c != *string++) {
  +         if ((c != *string)
  +             || ((flags & FNM_CASE_BLIND)
  +                 && (toupper(c) != toupper(*string)))) {
                return (FNM_NOMATCH);
            }
  +         string++;
            break;
        }
       /* NOTREACHED */
  @@ -180,11 +183,16 @@
            if (c2 == EOS) {
                return (NULL);
            }
  -         if (c <= test && test <= c2) {
  +         if ((c <= test && test <= c2)
  +             || ((flags & FNM_CASE_BLIND)
  +                 && ((toupper(c) <= toupper(test))
  +                     && (toupper(test) <= toupper(c2))))) {
                ok = 1;
            }
        }
  -     else if (c == test) {
  +     else if ((c == test)
  +              || ((flags & FNM_CASE_BLIND)
  +                  && (toupper(c) == toupper(test)))) {
            ok = 1;
        }
       }
  
  
  

Reply via email to