Make directory name comparisons on Win32 case insensitive.
authorMagnus Hagander
Fri, 3 Apr 2009 11:52:08 +0000 (11:52 +0000)
committerMagnus Hagander
Fri, 3 Apr 2009 11:52:08 +0000 (11:52 +0000)
This method will not catch all different ways since the locale
handling in NTFS doesn't provide an easy way to do that, but it
will hopefully solve the most common cases causing startup
problems when the backend is found in the system PATH.

Attempts to fix bug #4694.

src/port/path.c

index 62121da67176936e5bf6d40f8b7caaa6f0d5c182..bf3547a2cd18bd94895b14de72a29b007950fa06 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/port/path.c,v 1.76 2009/01/01 17:24:04 momjian Exp $
+ *   $PostgreSQL: pgsql/src/port/path.c,v 1.77 2009/04/03 11:52:08 mha Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -427,7 +427,12 @@ dir_strcmp(const char *s1, const char *s2)
 {
    while (*s1 && *s2)
    {
+#ifndef WIN32
        if (*s1 != *s2 &&
+#else
+           /* On windows, paths are case-insensitive */
+       if (pg_tolower(*s1) != pg_tolower(*s2) &&
+#endif
            !(IS_DIR_SEP(*s1) && IS_DIR_SEP(*s2)))
            return (int) *s1 - (int) *s2;
        s1++, s2++;