Module: wine Branch: master Commit: 5af20ef18052f135fd989805d9913f206767d856 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5af20ef18052f135fd989805d9...
Author: Jactry Zeng jactry92@gmail.com Date: Sun Mar 31 00:00:30 2013 +0800
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 776ef20..a5795bd 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); }
/*********************************************************************