mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-15 09:57:17 +00:00
msvcrt: Add _mbsncmp_l implementation.
This commit is contained in:
parent
8f30305049
commit
f73d74c6df
|
@ -1152,7 +1152,7 @@
|
|||
@ cdecl _mbsnccnt(str long)
|
||||
@ cdecl _mbsnccnt_l(str long ptr)
|
||||
@ cdecl _mbsncmp(str str long)
|
||||
@ stub _mbsncmp_l
|
||||
@ cdecl _mbsncmp_l(str str long ptr)
|
||||
@ stub _mbsncoll(str str long)
|
||||
@ stub _mbsncoll_l
|
||||
@ cdecl _mbsncpy(ptr str long)
|
||||
|
|
|
@ -1509,7 +1509,7 @@
|
|||
@ cdecl _mbsnccnt(str long)
|
||||
@ cdecl _mbsnccnt_l(str long ptr)
|
||||
@ cdecl _mbsncmp(str str long)
|
||||
@ stub _mbsncmp_l
|
||||
@ cdecl _mbsncmp_l(str str long ptr)
|
||||
@ stub _mbsncoll(str str long)
|
||||
@ stub _mbsncoll_l
|
||||
@ cdecl _mbsncpy(ptr str long)
|
||||
|
|
|
@ -1520,7 +1520,7 @@
|
|||
@ cdecl _mbsnccnt(str long)
|
||||
@ cdecl _mbsnccnt_l(str long ptr)
|
||||
@ cdecl _mbsncmp(str str long)
|
||||
@ stub _mbsncmp_l
|
||||
@ cdecl _mbsncmp_l(str str long ptr)
|
||||
@ stub _mbsncoll(str str long)
|
||||
@ stub _mbsncoll_l
|
||||
@ cdecl _mbsncpy(ptr str long)
|
||||
|
|
|
@ -824,7 +824,7 @@
|
|||
@ cdecl _mbsnccnt(str long)
|
||||
@ cdecl _mbsnccnt_l(str long ptr)
|
||||
@ cdecl _mbsncmp(str str long)
|
||||
@ stub _mbsncmp_l
|
||||
@ cdecl _mbsncmp_l(str str long ptr)
|
||||
@ stub _mbsncoll(str str long)
|
||||
@ stub _mbsncoll_l
|
||||
@ cdecl _mbsncpy(ptr str long)
|
||||
|
|
|
@ -802,7 +802,7 @@
|
|||
@ cdecl _mbsnccnt(str long)
|
||||
@ cdecl _mbsnccnt_l(str long ptr)
|
||||
@ cdecl _mbsncmp(str str long)
|
||||
@ stub _mbsncmp_l
|
||||
@ cdecl _mbsncmp_l(str str long ptr)
|
||||
@ stub _mbsncoll(str str long)
|
||||
@ stub _mbsncoll_l
|
||||
@ cdecl _mbsncpy(ptr str long)
|
||||
|
|
|
@ -1224,35 +1224,54 @@ int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp)
|
|||
return _mbsicmp_l(str, cmp, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _mbsncmp_l(MSVCRT.@)
|
||||
*/
|
||||
int CDECL _mbsncmp_l(const unsigned char* str, const unsigned char* cmp,
|
||||
size_t len, _locale_t locale)
|
||||
{
|
||||
pthreadmbcinfo mbcinfo;
|
||||
unsigned int strc, cmpc;
|
||||
|
||||
if (!len)
|
||||
return 0;
|
||||
|
||||
if (locale)
|
||||
mbcinfo = locale->mbcinfo;
|
||||
else
|
||||
mbcinfo = get_mbcinfo();
|
||||
|
||||
if (!mbcinfo->ismbcodepage)
|
||||
return u_strncmp(str, cmp, len); /* ASCII CP */
|
||||
|
||||
if (!MSVCRT_CHECK_PMT(str && cmp))
|
||||
return _NLSCMPERROR;
|
||||
|
||||
while (len--)
|
||||
{
|
||||
int inc;
|
||||
|
||||
if (!*str)
|
||||
return *cmp ? -1 : 0;
|
||||
if (!*cmp)
|
||||
return 1;
|
||||
strc = _mbsnextc_l(str, locale);
|
||||
cmpc = _mbsnextc_l(cmp, locale);
|
||||
if (strc != cmpc)
|
||||
return strc < cmpc ? -1 : 1;
|
||||
inc = (strc > 255) ? 2 : 1; /* Equal, use same increment */
|
||||
str += inc;
|
||||
cmp += inc;
|
||||
}
|
||||
return 0; /* Matched len chars */
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _mbsncmp(MSVCRT.@)
|
||||
*/
|
||||
int CDECL _mbsncmp(const unsigned char* str, const unsigned char* cmp, size_t len)
|
||||
{
|
||||
if(!len)
|
||||
return 0;
|
||||
|
||||
if(get_mbcinfo()->ismbcodepage)
|
||||
{
|
||||
unsigned int strc, cmpc;
|
||||
while(len--)
|
||||
{
|
||||
int inc;
|
||||
if(!*str)
|
||||
return *cmp ? -1 : 0;
|
||||
if(!*cmp)
|
||||
return 1;
|
||||
strc = _mbsnextc(str);
|
||||
cmpc = _mbsnextc(cmp);
|
||||
if(strc != cmpc)
|
||||
return strc < cmpc ? -1 : 1;
|
||||
inc=(strc > 255) ? 2 : 1; /* Equal, use same increment */
|
||||
str += inc;
|
||||
cmp += inc;
|
||||
}
|
||||
return 0; /* Matched len chars */
|
||||
}
|
||||
return u_strncmp(str, cmp, len); /* ASCII CP */
|
||||
return _mbsncmp_l(str, cmp, len, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
|
|
@ -773,7 +773,7 @@
|
|||
@ cdecl _mbsnccnt(str long)
|
||||
@ cdecl _mbsnccnt_l(str long ptr)
|
||||
@ cdecl _mbsncmp(str str long)
|
||||
# stub _mbsncmp_l(str str long ptr)
|
||||
@ cdecl _mbsncmp_l(str str long ptr)
|
||||
@ stub _mbsncoll(str str long)
|
||||
# stub _mbsncoll_l(str str long ptr)
|
||||
@ cdecl _mbsncpy(ptr str long)
|
||||
|
|
|
@ -668,7 +668,7 @@
|
|||
@ cdecl _mbsnccnt(str long)
|
||||
@ cdecl _mbsnccnt_l(str long ptr)
|
||||
@ cdecl _mbsncmp(str str long)
|
||||
@ stub _mbsncmp_l
|
||||
@ cdecl _mbsncmp_l(str str long ptr)
|
||||
@ stub _mbsncoll(str str long)
|
||||
@ stub _mbsncoll_l
|
||||
@ cdecl _mbsncpy(ptr str long)
|
||||
|
@ -1237,7 +1237,7 @@
|
|||
@ cdecl _o__mbsnccnt(str long) _mbsnccnt
|
||||
@ cdecl _o__mbsnccnt_l(str long ptr) _mbsnccnt_l
|
||||
@ cdecl _o__mbsncmp(str str long) _mbsncmp
|
||||
@ stub _o__mbsncmp_l
|
||||
@ cdecl _o__mbsncmp_l(str str long ptr) _mbsncmp_l
|
||||
@ stub _o__mbsncoll
|
||||
@ stub _o__mbsncoll_l
|
||||
@ cdecl _o__mbsncpy(ptr str long) _mbsncpy
|
||||
|
|
Loading…
Reference in a new issue