OSDN Git Service

Use (unsigned char) cast in argument of pg_tolower(). Maybe it works on
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Apr 2009 23:27:17 +0000 (23:27 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Apr 2009 23:27:17 +0000 (23:27 +0000)
Windows without that, but we shouldn't put bad examples where people might
copy them.  Also, reformat slightly to improve the odds that pgindent
won't go nuts on this.

src/port/path.c

index bf3547a..7aa39c3 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/port/path.c,v 1.77 2009/04/03 11:52:08 mha Exp $
+ *       $PostgreSQL: pgsql/src/port/path.c,v 1.78 2009/04/03 23:27:17 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -420,20 +420,22 @@ get_progname(const char *argv0)
 
 
 /*
- * dir_strcmp: strcmp except any two DIR_SEP characters are considered equal
+ * dir_strcmp: strcmp except any two DIR_SEP characters are considered equal,
+ * and we honor filesystem case insensitivity if known
  */
 static int
 dir_strcmp(const char *s1, const char *s2)
 {
        while (*s1 && *s2)
        {
+               if (
 #ifndef WIN32
-               if (*s1 != *s2 &&
+                       *s1 != *s2
 #else
                        /* On windows, paths are case-insensitive */
-               if (pg_tolower(*s1) != pg_tolower(*s2) &&
+                       pg_tolower((unsigned char) *s1) != pg_tolower((unsigned char) *s2)
 #endif
-                       !(IS_DIR_SEP(*s1) && IS_DIR_SEP(*s2)))
+                       && !(IS_DIR_SEP(*s1) && IS_DIR_SEP(*s2)))
                        return (int) *s1 - (int) *s2;
                s1++, s2++;
        }