Formerly ../posix/fnmatch.c.~14~
authorroland <roland>
Wed, 27 May 1992 23:42:12 +0000 (23:42 +0000)
committerroland <roland>
Wed, 27 May 1992 23:42:12 +0000 (23:42 +0000)
posix/fnmatch.c

index b9f2dc8..7b6abb8 100644 (file)
@@ -1,24 +1,23 @@
-/* Copyright (C) 1991 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
 
-The GNU C Library is free software; you can redistribute it and/or
+This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Library General Public License as
 published by the Free Software Foundation; either version 2 of the
 License, or (at your option) any later version.
 
-The GNU C Library is distributed in the hope that it will be useful,
+This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Library General Public License for more details.
 
 You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+License along with this library; see the file COPYING.LIB.  If
+not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-/* IGNORE(@ */
+/* @ */
 #include <ansidecl.h>
-/* @) */
+/* @ */
 #include <errno.h>
 #include <fnmatch.h>
 
@@ -29,10 +28,12 @@ extern int errno;
 /* Match STRING against the filename pattern PATTERN, returning zero if
    it matches, nonzero if not.  */
 int
-DEFUN(fnmatch, (pattern, string, flags),
-      CONST char *pattern AND CONST char *string AND int flags)
+fnmatch (pattern, string, flags)
+     const char *pattern;
+     const char *string;
+     int flags;
 {
-  register CONST char *p = pattern, *n = string;
+  register const char *p = pattern, *n = string;
   register char c;
 
   if ((flags & ~__FNM_FLAGS) != 0)
@@ -54,70 +55,70 @@ DEFUN(fnmatch, (pattern, string, flags),
                   (n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
            return FNM_NOMATCH;
          break;
-         
+
        case '\\':
          if (!(flags & FNM_NOESCAPE))
            c = *p++;
          if (*n != c)
            return FNM_NOMATCH;
          break;
-         
+
        case '*':
          if ((flags & FNM_PERIOD) && *n == '.' &&
              (n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
            return FNM_NOMATCH;
-         
+
          for (c = *p++; c == '?' || c == '*'; c = *p++, ++n)
            if (((flags & FNM_PATHNAME) && *n == '/') ||
                (c == '?' && *n == '\0'))
              return FNM_NOMATCH;
-         
+
          if (c == '\0')
            return 0;
-         
+
          {
            char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c;
            for (--p; *n != '\0'; ++n)
              if ((c == '[' || *n == c1) &&
-                 fnmatch(p, n, flags & ~FNM_PERIOD) == 0)
+                 fnmatch (p, n, flags & ~FNM_PERIOD) == 0)
                return 0;
            return FNM_NOMATCH;
          }
-         
+
        case '[':
          {
            /* Nonzero if the sense of the character class is inverted.  */
            register int not;
-           
+
            if (*n == '\0')
              return FNM_NOMATCH;
-           
+
            if ((flags & FNM_PERIOD) && *n == '.' &&
                (n == string || ((flags & FNM_PATHNAME) && n[-1] == '/')))
              return FNM_NOMATCH;
-           
+
            not = (*p == '!' || *p == '^');
            if (not)
              ++p;
-           
+
            c = *p++;
            for (;;)
              {
                register char cstart = c, cend = c;
-               
+
                if (!(flags & FNM_NOESCAPE) && c == '\\')
                  cstart = cend = *p++;
-               
+
                if (c == '\0')
                  /* [ (unterminated) loses.  */
                  return FNM_NOMATCH;
-               
+
                c = *p++;
-               
+
                if ((flags & FNM_PATHNAME) && c == '/')
                  /* [/] can never match.  */
                  return FNM_NOMATCH;
-               
+
                if (c == '-' && *p != ']')
                  {
                    cend = *p++;
@@ -127,17 +128,17 @@ DEFUN(fnmatch, (pattern, string, flags),
                      return FNM_NOMATCH;
                    c = *p++;
                  }
-               
+
                if (*n >= cstart && *n <= cend)
                  goto matched;
-               
+
                if (c == ']')
                  break;
              }
            if (!not)
              return FNM_NOMATCH;
            break;
-           
+
          matched:;
            /* Skip the rest of the [...] that already matched.  */
            while (c != ']')
@@ -145,7 +146,7 @@ DEFUN(fnmatch, (pattern, string, flags),
                if (c == '\0')
                  /* [... (unterminated) loses.  */
                  return FNM_NOMATCH;
-               
+
                c = *p++;
                if (!(flags & FNM_NOESCAPE) && c == '\\')
                  /* 1003.2d11 is unclear if this is right.  %%% */
@@ -155,12 +156,12 @@ DEFUN(fnmatch, (pattern, string, flags),
              return FNM_NOMATCH;
          }
          break;
-         
+
        default:
          if (c != *n)
            return FNM_NOMATCH;
        }
-      
+
       ++n;
     }