[PATCH 3/4] msvcrt: Added _wcsnicoll_l implementation.

Jactry Zeng jactry92 at gmail.com
Sat Mar 30 14:37:08 CDT 2013


-------------- next part --------------
From efb0c53b962f14437b5234f44eab504761ed6fe2 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <jactry92 at gmail.com>
Date: Sun, 31 Mar 2013 00:00:30 +0800
Subject: msvcrt: Added _wcsnicoll_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           |   20 ++++++++++++++++++--
 6 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 0c363bd..1531da9 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1495,7 +1495,7 @@
 @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp
 @ stub _wcsnicmp_l
 @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll
-@ stub _wcsnicoll_l
+@ cdecl _wcsnicoll_l(wstr wstr long ptr) msvcrt._wcsnicoll_l
 @ cdecl _wcsnset(wstr long long) msvcrt._wcsnset
 @ stub _wcsnset_s
 @ cdecl _wcsrev(wstr) msvcrt._wcsrev
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index 2d9e69e..c851928 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1858,7 +1858,7 @@
 @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp
 @ stub _wcsnicmp_l
 @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll
-@ stub _wcsnicoll_l
+@ cdecl _wcsnicoll_l(wstr wstr long ptr) msvcrt._wcsnicoll_l
 @ cdecl _wcsnset(wstr long long) msvcrt._wcsnset
 @ stub _wcsnset_s
 @ cdecl _wcsrev(wstr) msvcrt._wcsrev
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 0faa5f7..e33c694 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1155,7 +1155,7 @@
 @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp
 @ stub _wcsnicmp_l
 @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll
-@ stub _wcsnicoll_l
+@ cdecl _wcsnicoll_l(wstr wstr long ptr) msvcrt._wcsnicoll_l
 @ cdecl _wcsnset(wstr long long) msvcrt._wcsnset
 @ stub _wcsnset_s
 @ cdecl _wcsrev(wstr) msvcrt._wcsrev
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index f7c751a..fb549cf 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1149,7 +1149,7 @@
 @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp
 @ stub _wcsnicmp_l
 @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll
-@ stub _wcsnicoll_l
+@ cdecl _wcsnicoll_l(wstr wstr long ptr) msvcrt._wcsnicoll_l
 @ cdecl _wcsnset(wstr long long) msvcrt._wcsnset
 @ stub _wcsnset_s
 @ cdecl _wcsrev(wstr) msvcrt._wcsrev
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 5193104..ff96b36 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1114,7 +1114,7 @@
 @ cdecl _wcsnicmp(wstr wstr long) ntdll._wcsnicmp
 # stub _wcsnicmp_l(wstr wstr long ptr)
 @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll
-# stub _wcsnicoll_l(wstr wstr long ptr)
+@ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l
 @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset
 # stub _wcsnset_s(wstr long long)
 @ cdecl _wcsrev(wstr) MSVCRT__wcsrev
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 1170e93..8e17621 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -102,12 +102,28 @@ INT CDECL MSVCRT__wcsicoll( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* st
 }
 
 /*********************************************************************
+ *              _wcsnicoll_l (MSVCRT.@)
+ */
+int CDECL MSVCRT__wcsnicoll_l(const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2,
+			      MSVCRT_size_t count, 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, count, str2, count)-CSTR_EQUAL;
+}
+
+/*********************************************************************
  *		_wcsnicoll (MSVCRT.@)
  */
 INT CDECL MSVCRT__wcsnicoll( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2, MSVCRT_size_t count )
 {
-    return CompareStringW(get_locinfo()->lc_handle[MSVCRT_LC_COLLATE],
-            NORM_IGNORECASE, str1, count, str2, count)-CSTR_EQUAL;
+    return MSVCRT__wcsnicoll_l(str1, str2, count, NULL);
 }
 
 /*********************************************************************
-- 
1.7.9.5


More information about the wine-patches mailing list