Commit f73d74c6 authored by Bartosz Kosiorek's avatar Bartosz Kosiorek Committed by Alexandre Julliard

msvcrt: Add _mbsncmp_l implementation.

parent 8f303050
......@@ -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)
......
......@@ -1225,34 +1225,53 @@ int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp)
}
/*********************************************************************
* _mbsncmp(MSVCRT.@)
* _mbsncmp_l(MSVCRT.@)
*/
int CDECL _mbsncmp(const unsigned char* str, const unsigned char* cmp, size_t len)
int CDECL _mbsncmp_l(const unsigned char* str, const unsigned char* cmp,
size_t len, _locale_t locale)
{
if(!len)
return 0;
if(get_mbcinfo()->ismbcodepage)
{
pthreadmbcinfo mbcinfo;
unsigned int strc, cmpc;
while(len--)
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(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;
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 */
}
return u_strncmp(str, cmp, len); /* ASCII CP */
}
/*********************************************************************
* _mbsncmp(MSVCRT.@)
*/
int CDECL _mbsncmp(const unsigned char* str, const unsigned char* cmp, size_t len)
{
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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment