Fixed wierd bug with lowercase accented character directories.
authorSamba Release Account <samba-bugs@samba.org>
Wed, 2 Jul 1997 22:37:44 +0000 (22:37 +0000)
committerSamba Release Account <samba-bugs@samba.org>
Wed, 2 Jul 1997 22:37:44 +0000 (22:37 +0000)
Jeremy (jallison@whistle.com)
(This used to be commit 1f0ecfe4fc612b214480f8b8462764964556ed5c)

source3/lib/util.c

index 9ebfdca88ea87c0c8bbbd27d995d0f2d336cf366..b9b647395b915cf6c3d9dd1177359fd8f5cfe12b 100644 (file)
@@ -800,12 +800,15 @@ char *attrib_string(int mode)
 int StrCaseCmp(const char *s, const char *t)
 {
   /* compare until we run out of string, either t or s, or find a difference */
-  while (*s && *t && tolower(*s) == tolower(*t))
+  /* We *must* use toupper rather than tolower here due to the
+     asynchronous upper to lower mapping.
+   */
+  while (*s && *t && toupper(*s) == toupper(*t))
   {
     s++; t++;
   }
 
-  return(tolower(*s) - tolower(*t));
+  return(toupper(*s) - toupper(*t));
 }
 
 /*******************************************************************
@@ -814,13 +817,16 @@ int StrCaseCmp(const char *s, const char *t)
 int StrnCaseCmp(const char *s, const char *t, int n)
 {
   /* compare until we run out of string, either t or s, or chars */
-  while (n-- && *s && *t && tolower(*s) == tolower(*t))
+  /* We *must* use toupper rather than tolower here due to the
+     asynchronous upper to lower mapping.
+   */
+  while (n-- && *s && *t && toupper(*s) == toupper(*t))
   {
     s++; t++;
   }
 
   /* not run out of chars - strings are different lengths */
-  if (n) return(tolower(*s) - tolower(*t));
+  if (n) return(toupper(*s) - toupper(*t));
 
   /* identical up to where we run out of chars, and strings are same length */
   return(0);