Module: wine Branch: master Commit: 2f425fb8326f9ccda96bd5b9dc604f911d23b56d URL: http://source.winehq.org/git/wine.git/?a=commit;h=2f425fb8326f9ccda96bd5b9dc...
Author: Jactry Zeng jactry92@gmail.com Date: Fri Mar 29 17:12:53 2013 +0800
msvcrt: Added _wcsncoll and _wcsncoll_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 | 4 ++-- dlls/msvcrt/wcs.c | 24 ++++++++++++++++++++++++ 6 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index af00082..6476571 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1491,7 +1491,7 @@ @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s @ stub _wcslwr_s_l @ cdecl _wcsncoll(wstr wstr long) msvcrt._wcsncoll -@ stub _wcsncoll_l +@ cdecl _wcsncoll_l(wstr wstr long ptr) msvcrt._wcsncoll_l @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp @ stub _wcsnicmp_l @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index a80cc6e..c8c99f1 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1854,7 +1854,7 @@ @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s @ stub _wcslwr_s_l @ cdecl _wcsncoll(wstr wstr long) msvcrt._wcsncoll -@ stub _wcsncoll_l +@ cdecl _wcsncoll_l(wstr wstr long ptr) msvcrt._wcsncoll_l @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp @ stub _wcsnicmp_l @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index d8f361f..cd83405 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1151,7 +1151,7 @@ @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s @ stub _wcslwr_s_l @ cdecl _wcsncoll(wstr wstr long) msvcrt._wcsncoll -@ stub _wcsncoll_l +@ cdecl _wcsncoll_l(wstr wstr long ptr) msvcrt._wcsncoll_l @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp @ stub _wcsnicmp_l @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 7916839..6d19a3d 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1145,7 +1145,7 @@ @ cdecl _wcslwr_s(wstr long) msvcrt._wcslwr_s @ stub _wcslwr_s_l @ cdecl _wcsncoll(wstr wstr long) msvcrt._wcsncoll -@ stub _wcsncoll_l +@ cdecl _wcsncoll_l(wstr wstr long ptr) msvcrt._wcsncoll_l @ cdecl _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp @ stub _wcsnicmp_l @ cdecl _wcsnicoll(wstr wstr long) msvcrt._wcsnicoll diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index edef615..89d9028 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1109,8 +1109,8 @@ # stub _wcslwr_l(wstr ptr) @ cdecl _wcslwr_s(wstr long) MSVCRT__wcslwr_s # stub _wcslwr_s_l(wstr long ptr) -@ stub _wcsncoll(wstr wstr long) -# stub _wcsncoll_l(wstr wstr long ptr) +@ cdecl _wcsncoll(wstr wstr long) MSVCRT__wcsncoll +@ cdecl _wcsncoll_l(wstr wstr long ptr) MSVCRT__wcsncoll_l @ cdecl _wcsnicmp(wstr wstr long) ntdll._wcsnicmp # stub _wcsnicmp_l(wstr wstr long ptr) @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index eb268dc..511a814 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -199,6 +199,30 @@ int CDECL MSVCRT__wcslwr_s( MSVCRT_wchar_t* str, MSVCRT_size_t n ) }
/********************************************************************* + * _wcsncoll_l (MSVCRT.@) + */ +int CDECL MSVCRT__wcsncoll_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], 0, str1, count, str2, count)-CSTR_EQUAL; +} + +/********************************************************************* + * _wcsncoll (MSVCRT.@) + */ +int CDECL MSVCRT__wcsncoll(const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2, MSVCRT_size_t count) +{ + return MSVCRT__wcsncoll_l(str1, str2, count, NULL); +} + +/********************************************************************* * _wcstod_l (MSVCRT.@) */ double CDECL MSVCRT__wcstod_l(const MSVCRT_wchar_t* str, MSVCRT_wchar_t** end,