msvcrt: Added _wcscoll_l implementation.

This commit is contained in:
Jactry Zeng 2013-03-30 22:34:31 +08:00 committed by Alexandre Julliard
parent 2467c06a30
commit dafa7611e9
6 changed files with 21 additions and 7 deletions

View file

@ -1477,7 +1477,7 @@
@ cdecl _wchmod(wstr long) msvcrt._wchmod @ cdecl _wchmod(wstr long) msvcrt._wchmod
@ extern _wcmdln msvcrt._wcmdln @ extern _wcmdln msvcrt._wcmdln
@ cdecl _wcreat(wstr long) msvcrt._wcreat @ cdecl _wcreat(wstr long) msvcrt._wcreat
@ stub _wcscoll_l @ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
@ cdecl _wcsdup(wstr) msvcrt._wcsdup @ cdecl _wcsdup(wstr) msvcrt._wcsdup
@ cdecl _wcserror(long) msvcrt._wcserror @ cdecl _wcserror(long) msvcrt._wcserror
@ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s

View file

@ -1840,7 +1840,7 @@
@ extern _wcmdln msvcrt._wcmdln @ extern _wcmdln msvcrt._wcmdln
@ cdecl _wcreat(wstr long) msvcrt._wcreat @ cdecl _wcreat(wstr long) msvcrt._wcreat
@ stub _wcreate_locale @ stub _wcreate_locale
@ stub _wcscoll_l @ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
@ cdecl _wcsdup(wstr) msvcrt._wcsdup @ cdecl _wcsdup(wstr) msvcrt._wcsdup
@ cdecl _wcserror(long) msvcrt._wcserror @ cdecl _wcserror(long) msvcrt._wcserror
@ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s

View file

@ -1137,7 +1137,7 @@
@ cdecl _wchmod(wstr long) msvcrt._wchmod @ cdecl _wchmod(wstr long) msvcrt._wchmod
@ extern _wcmdln msvcrt._wcmdln @ extern _wcmdln msvcrt._wcmdln
@ cdecl _wcreat(wstr long) msvcrt._wcreat @ cdecl _wcreat(wstr long) msvcrt._wcreat
@ stub _wcscoll_l @ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
@ cdecl _wcsdup(wstr) msvcrt._wcsdup @ cdecl _wcsdup(wstr) msvcrt._wcsdup
@ cdecl _wcserror(long) msvcrt._wcserror @ cdecl _wcserror(long) msvcrt._wcserror
@ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s

View file

@ -1131,7 +1131,7 @@
@ cdecl _wchmod(wstr long) msvcrt._wchmod @ cdecl _wchmod(wstr long) msvcrt._wchmod
@ extern _wcmdln msvcrt._wcmdln @ extern _wcmdln msvcrt._wcmdln
@ cdecl _wcreat(wstr long) msvcrt._wcreat @ cdecl _wcreat(wstr long) msvcrt._wcreat
@ stub _wcscoll_l @ cdecl _wcscoll_l(wstr wstr ptr) msvcrt._wcscoll_l
@ cdecl _wcsdup(wstr) msvcrt._wcsdup @ cdecl _wcsdup(wstr) msvcrt._wcsdup
@ cdecl _wcserror(long) msvcrt._wcserror @ cdecl _wcserror(long) msvcrt._wcserror
@ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s @ cdecl _wcserror_s(ptr long long) msvcrt._wcserror_s

View file

@ -1095,7 +1095,7 @@
@ cdecl _wchmod(wstr long) MSVCRT__wchmod @ cdecl _wchmod(wstr long) MSVCRT__wchmod
@ extern _wcmdln MSVCRT__wcmdln @ extern _wcmdln MSVCRT__wcmdln
@ cdecl _wcreat(wstr long) MSVCRT__wcreat @ 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 @ cdecl _wcsdup(wstr) MSVCRT__wcsdup
# stub _wcsdup_dbg(wstr long str long) # stub _wcsdup_dbg(wstr long str long)
@ cdecl _wcserror(long) MSVCRT__wcserror @ cdecl _wcserror(long) MSVCRT__wcserror

View file

@ -1037,13 +1037,27 @@ int CDECL MSVCRT_swprintf_p_l(MSVCRT_wchar_t *buffer, MSVCRT_size_t length,
return r; return r;
} }
/*********************************************************************
* _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.@) * wcscoll (MSVCRT.@)
*/ */
int CDECL MSVCRT_wcscoll( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2 ) int CDECL MSVCRT_wcscoll( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str2 )
{ {
return CompareStringW(get_locinfo()->lc_handle[MSVCRT_LC_COLLATE], return MSVCRT__wcscoll_l(str1, str2, NULL);
0, str1, -1, str2, -1)-CSTR_EQUAL;
} }
/********************************************************************* /*********************************************************************