PATCH: mbsicoll

Marcus Meissner meissner at suse.de
Wed Jan 29 18:35:19 CST 2003


Hi,

Ciao, Marcus

Changelog:
	Implemented mbsicoll (without locale handling)

Index: dlls/msvcrt/mbcs.c
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/mbcs.c,v
retrieving revision 1.21
diff -u -r1.21 mbcs.c
--- dlls/msvcrt/mbcs.c	19 Dec 2002 04:21:30 -0000	1.21
+++ dlls/msvcrt/mbcs.c	30 Jan 2003 00:34:47 -0000
@@ -307,6 +307,32 @@
 }
 
 /*********************************************************************
+ *		_mbsicoll(MSVCRT.@)
+ * FIXME: handle locales.
+ */
+int _mbsicoll(const unsigned char* str, const unsigned char* cmp)
+{
+  if(MSVCRT___mb_cur_max > 1)
+  {
+    unsigned int strc, cmpc;
+    do {
+      if(!*str)
+        return *cmp ? -1 : 0;
+      if(!*cmp)
+        return 1;
+      strc = _mbctolower(_mbsnextc(str));
+      cmpc = _mbctolower(_mbsnextc(cmp));
+      if(strc != cmpc)
+        return strc < cmpc ? -1 : 1;
+      str +=(strc > 255) ? 2 : 1;
+      cmp +=(strc > 255) ? 2 : 1; /* equal, use same increment */
+    } while(1);
+  }
+  return strcasecmp(str, cmp); /* ASCII CP */
+}
+
+
+/*********************************************************************
  *		_mbsicmp(MSVCRT.@)
  */
 int _mbsicmp(const unsigned char* str, const unsigned char* cmp)
Index: dlls/msvcrt/msvcrt.spec
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/msvcrt.spec,v
retrieving revision 1.59
diff -u -r1.59 msvcrt.spec
--- dlls/msvcrt/msvcrt.spec	11 Jan 2003 21:01:04 -0000	1.59
+++ dlls/msvcrt/msvcrt.spec	30 Jan 2003 00:34:47 -0000
@@ -355,7 +355,7 @@
 @ cdecl _mbsdec(ptr ptr) _mbsdec
 @ cdecl _mbsdup(str) _strdup
 @ cdecl _mbsicmp(str str) _mbsicmp
-@ stub _mbsicoll #(str str)
+@ cdecl _mbsicoll(str str) _mbsicoll
 @ cdecl _mbsinc(str) _mbsinc
 @ cdecl _mbslen(str) _mbslen
 @ cdecl _mbslwr(str) _mbslwr



More information about the wine-patches mailing list