[PATCH 1/4] msvcrt: Added _wcscoll_l implementation.

Jactry Zeng jactry92 at gmail.com
Sat Mar 30 14:36:49 CDT 2013


-------------- next part --------------
From 6d215933dde94b0d9ac895e1c20249615d71b3e0 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <jactry92 at gmail.com>
Date: Sat, 30 Mar 2013 22:34:31 +0800
Subject: msvcrt: Added _wcscoll_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           |   18 ++++++++++++++++--
 6 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 6476571..ab52ff7 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1477,7 +1477,7 @@
 @ cdecl _wchmod(wstr long) msvcrt._wchmod
 @ extern _wcmdln msvcrt._wcmdln
 @ cdecl _wcreat(wstr long) msvcrt._wcreat
-@ stub _wcscoll_l
+@ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
 @ cdecl _wcsdup(wstr) msvcrt._wcsdup
 @ cdecl _wcserror(long) msvcrt._wcserror
 @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index c8c99f1..7776dee 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -1840,7 +1840,7 @@
 @ extern _wcmdln msvcrt._wcmdln
 @ cdecl _wcreat(wstr long) msvcrt._wcreat
 @ stub _wcreate_locale
-@ stub _wcscoll_l
+@ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
 @ cdecl _wcsdup(wstr) msvcrt._wcsdup
 @ cdecl _wcserror(long) msvcrt._wcserror
 @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index cd83405..e635e96 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1137,7 +1137,7 @@
 @ cdecl _wchmod(wstr long) msvcrt._wchmod
 @ extern _wcmdln msvcrt._wcmdln
 @ cdecl _wcreat(wstr long) msvcrt._wcreat
-@ stub _wcscoll_l
+@ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
 @ cdecl _wcsdup(wstr) msvcrt._wcsdup
 @ cdecl _wcserror(long) msvcrt._wcserror
 @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 6d19a3d..9bcdccb 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1131,7 +1131,7 @@
 @ cdecl _wchmod(wstr long) msvcrt._wchmod
 @ extern _wcmdln msvcrt._wcmdln
 @ cdecl _wcreat(wstr long) msvcrt._wcreat
-@ stub _wcscoll_l
+@ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
 @ cdecl _wcsdup(wstr) msvcrt._wcsdup
 @ cdecl _wcserror(long) msvcrt._wcserror
 @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 89d9028..30ac113 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1095,7 +1095,7 @@
 @ cdecl _wchmod(wstr long) MSVCRT__wchmod
 @ extern _wcmdln MSVCRT__wcmdln
 @ cdecl _wcreat(wstr long) MSVCRT__wcreat
-# stub _wcscoll_l(wstr wstr ptr)
+@ cdecl _wcscoll_l(wstr wstr ptr) MSVCRT__wcscoll_l
 @ cdecl _wcsdup(wstr) MSVCRT__wcsdup
 # stub _wcsdup_dbg(wstr long str long)
 @ cdecl _wcserror(long) MSVCRT__wcserror
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index 511a814..f785517 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -1038,12 +1038,26 @@ int CDECL MSVCRT_swprintf_p_l(MSVCRT_wchar_t *buffer, MSVCRT_size_t length,
 }
 
 /*********************************************************************
+ *              _wcscoll_l (MSVCRT.@)
+ */
+int CDECL MSVCRT__wcscoll_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], 0, str1, -1, str2, -1)-CSTR_EQUAL;
+}
+
+/*********************************************************************
  *		wcscoll (MSVCRT.@)
  */
 int CDECL MSVCRT_wcscoll( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2 )
 {
-    return CompareStringW(get_locinfo()->lc_handle[MSVCRT_LC_COLLATE],
-            0, str1, -1, str2, -1)-CSTR_EQUAL;
+    return MSVCRT__wcscoll_l(str1, str2, NULL);
 }
 
 /*********************************************************************
-- 
1.7.9.5


More information about the wine-patches mailing list