Jactry Zeng : msvcrt: Added _wcsicoll_l implementation.

Alexandre Julliard julliard at winehq.org
Mon Apr 1 13:48:41 CDT 2013


Module: wine
Branch: master
Commit: d2763e43d10160eaf5e0c057e32d68d4f9289b6b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d2763e43d10160eaf5e0c057e32d68d4f9289b6b

Author: Jactry Zeng <jactry92 at gmail.com>
Date:   Sat Mar 30 22:59:02 2013 +0800

msvcrt: Added _wcsicoll_l implementation.

---

 dlls/msvcr100/msvcr100.spec |    2 +-
 dlls/msvcr110/msvcr110.spec |    2 +-
 dlls/msvcr80/msvcr80.spec   |    2 +-
 dlls/msvcr90/msvcr90.spec   |    2 +-
 dlls/msvcrt/msvcrt.spec     |    2 +-
 dlls/msvcrt/wcs.c           |   19 +++++++++++++++++--
 6 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index ab52ff7..0c363bd 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1485,7 +1485,7 @@
 @ cdecl _wcsicmp(wstr wstr) msvcrt._wcsicmp
 @ stub _wcsicmp_l
 @ cdecl _wcsicoll(wstr wstr) msvcrt._wcsicoll
-@ stub _wcsicoll_l
+@ cdecl _wcsicoll_l(wstr wstr ptr) msvcrt._wcsicoll_l
 @ cdecl _wcslwr(wstr) msvcrt._wcslwr
 @ stub _wcslwr_l
 @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index 7776dee..2d9e69e 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1848,7 +1848,7 @@
 @ cdecl _wcsicmp(wstr wstr) msvcrt._wcsicmp
 @ stub _wcsicmp_l
 @ cdecl _wcsicoll(wstr wstr) msvcrt._wcsicoll
-@ stub _wcsicoll_l
+@ cdecl _wcsicoll_l(wstr wstr ptr) msvcrt._wcsicoll_l
 @ cdecl _wcslwr(wstr) msvcrt._wcslwr
 @ stub _wcslwr_l
 @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index e635e96..0faa5f7 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1145,7 +1145,7 @@
 @ cdecl _wcsicmp(wstr wstr) msvcrt._wcsicmp
 @ stub _wcsicmp_l
 @ cdecl _wcsicoll(wstr wstr) msvcrt._wcsicoll
-@ stub _wcsicoll_l
+@ cdecl _wcsicoll_l(wstr wstr ptr) msvcrt._wcsicoll_l
 @ cdecl _wcslwr(wstr) msvcrt._wcslwr
 @ stub _wcslwr_l
 @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 9bcdccb..f7c751a 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1139,7 +1139,7 @@
 @ cdecl _wcsicmp(wstr wstr) msvcrt._wcsicmp
 @ stub _wcsicmp_l
 @ cdecl _wcsicoll(wstr wstr) msvcrt._wcsicoll
-@ stub _wcsicoll_l
+@ cdecl _wcsicoll_l(wstr wstr ptr) msvcrt._wcsicoll_l
 @ cdecl _wcslwr(wstr) msvcrt._wcslwr
 @ stub _wcslwr_l
 @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 30ac113..5193104 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1104,7 +1104,7 @@
 @ cdecl _wcsicmp(wstr wstr) MSVCRT__wcsicmp
 # stub _wcsicmp_l(wstr wstr ptr)
 @ cdecl _wcsicoll(wstr wstr) MSVCRT__wcsicoll
-# stub _wcsicoll_l(wstr wstr ptr)
+@ cdecl _wcsicoll_l(wstr wstr ptr) MSVCRT__wcsicoll_l
 @ cdecl _wcslwr(wstr) ntdll._wcslwr
 # stub _wcslwr_l(wstr ptr)
 @ cdecl _wcslwr_s(wstr long) MSVCRT__wcslwr_s
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 9d45a24..776ef20 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -78,12 +78,27 @@ INT CDECL MSVCRT__wcsicmp( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str
 }
 
 /*********************************************************************
+ *              _wcsicoll_l (MSVCRT.@)
+ */
+int CDECL MSVCRT__wcsicoll_l(const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2, MSVCRT__locale_t locale)
+{
+    MSVCRT_pthreadlocinfo locinfo;
+
+    if(!locale)
+        locinfo = get_locinfo();
+    else
+        locinfo = locale->locinfo;
+
+    return CompareStringW(locinfo->lc_handle[MSVCRT_LC_COLLATE], NORM_IGNORECASE,
+			  str1, -1, str2, -1)-CSTR_EQUAL;
+}
+
+/*********************************************************************
  *		_wcsicoll (MSVCRT.@)
  */
 INT CDECL MSVCRT__wcsicoll( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2 )
 {
-    return CompareStringW(get_locinfo()->lc_handle[MSVCRT_LC_COLLATE],
-            NORM_IGNORECASE, str1, -1, str2, -1)-CSTR_EQUAL;
+    return MSVCRT__wcsicoll_l(str1, str2, NULL);
 }
 
 /*********************************************************************




More information about the wine-cvs mailing list