This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 17/18] posix: Use enum for __glob_pattern_type result


This patch replaces the internal integer constant from
__glob_pattern_type return with a proper enum.

Checked on x86_64-linux-gnu.

	* posix/glob_internal.h (__glob_pat_types): New enumeration.
	(__glob_pattern_type): Use __glob_pat_types.
	* posix/glob_pattern_p.c (__glob_pattern_p): Likewise.
	* posix/glob.c (glob): Likewise.
	(glob_in_dir): Likewise.
---
 posix/glob.c           |  8 ++++----
 posix/glob_internal.h  | 18 +++++++++++++-----
 posix/glob_pattern_p.c |  2 +-
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/posix/glob.c b/posix/glob.c
index 647334d..37e8702 100644
--- a/posix/glob.c
+++ b/posix/glob.c
@@ -906,7 +906,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
      [ which we handle the same, using fnmatch.  Broken unterminated
      pattern bracket expressions ought to be rare enough that it is
      not worth special casing them, fnmatch will do the right thing.  */
-  if (meta & 5)
+  if (meta & (__glob_special | __glob_bracket))
     {
       /* The directory name contains metacharacters, so we
 	 have to glob for the directory, and then glob for
@@ -1059,7 +1059,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
       size_t old_pathc = pglob->gl_pathc;
       int orig_flags = flags;
 
-      if (meta & 2)
+      if (meta & __glob_backslash)
 	{
 	  char *p = strchr (char_array_str (&dirname), '\\'), *q;
 	  /* We need to unescape the dirname string.  It is certainly
@@ -1272,14 +1272,14 @@ glob_in_dir (const char *pattern, const char *directory, int flags,
   globnames_array_init (&globnames);
 
   meta = __glob_pattern_type (pattern, !(flags & GLOB_NOESCAPE));
-  if (meta == 0 && (flags & (GLOB_NOCHECK|GLOB_NOMAGIC)))
+  if (meta == __glob_none && (flags & (GLOB_NOCHECK|GLOB_NOMAGIC)))
     {
       /* We need not do any tests.  The PATTERN contains no meta
 	 characters and we must not return an error therefore the
 	 result will always contain exactly one name.  */
       flags |= GLOB_NOCHECK;
     }
-  else if (meta == 0)
+  else if (meta == __glob_none)
     {
       /* Since we use the normal file functions we can also use stat()
 	 to verify the file is there.  */
diff --git a/posix/glob_internal.h b/posix/glob_internal.h
index d989a98..54143c2 100644
--- a/posix/glob_internal.h
+++ b/posix/glob_internal.h
@@ -19,35 +19,43 @@
 #ifndef GLOB_INTERNAL_H
 # define GLOB_INTERNAL_H
 
+enum __glob_pat_types
+{
+  __glob_none      = 0x0,
+  __glob_special   = 0x1,
+  __glob_backslash = 0x2,
+  __glob_bracket   = 0x4 
+};
+
 static inline int
 __glob_pattern_type (const char *pattern, int quote)
 {
   const char *p;
-  int ret = 0;
+  int ret = __glob_none;
 
   for (p = pattern; *p != '\0'; ++p)
     switch (*p)
       {
       case '?':
       case '*':
-	return 1;
+	return __glob_special;
 
       case '\\':
 	if (quote)
 	  {
 	    if (p[1] != '\0')
 	      ++p;
-	    ret |= 2;
+	    ret |= __glob_backslash;
 	  }
 	break;
 
       case '[':
-	ret |= 4;
+	ret |= __glob_bracket;
 	break;
 
       case ']':
 	if (ret & 4)
-	  return 1;
+	  return __glob_special;
 	break;
       }
 
diff --git a/posix/glob_pattern_p.c b/posix/glob_pattern_p.c
index 6e451f2..61caf37 100644
--- a/posix/glob_pattern_p.c
+++ b/posix/glob_pattern_p.c
@@ -24,6 +24,6 @@
 int
 __glob_pattern_p (const char *pattern, int quote)
 {
-  return __glob_pattern_type (pattern, quote) == 1;
+  return __glob_pattern_type (pattern, quote) == __glob_special;
 }
 weak_alias (__glob_pattern_p, glob_pattern_p)
-- 
2.7.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]