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

msvcrt: Add _mbsnccnt_l implementation.

parent a67a0889
...@@ -1150,7 +1150,7 @@ ...@@ -1150,7 +1150,7 @@
@ stub _mbsncat_s @ stub _mbsncat_s
@ stub _mbsncat_s_l @ stub _mbsncat_s_l
@ cdecl _mbsnccnt(str long) @ cdecl _mbsnccnt(str long)
@ stub _mbsnccnt_l @ cdecl _mbsnccnt_l(str long ptr)
@ cdecl _mbsncmp(str str long) @ cdecl _mbsncmp(str str long)
@ stub _mbsncmp_l @ stub _mbsncmp_l
@ stub _mbsncoll(str str long) @ stub _mbsncoll(str str long)
......
...@@ -1507,7 +1507,7 @@ ...@@ -1507,7 +1507,7 @@
@ stub _mbsncat_s @ stub _mbsncat_s
@ stub _mbsncat_s_l @ stub _mbsncat_s_l
@ cdecl _mbsnccnt(str long) @ cdecl _mbsnccnt(str long)
@ stub _mbsnccnt_l @ cdecl _mbsnccnt_l(str long ptr)
@ cdecl _mbsncmp(str str long) @ cdecl _mbsncmp(str str long)
@ stub _mbsncmp_l @ stub _mbsncmp_l
@ stub _mbsncoll(str str long) @ stub _mbsncoll(str str long)
......
...@@ -1518,7 +1518,7 @@ ...@@ -1518,7 +1518,7 @@
@ stub _mbsncat_s @ stub _mbsncat_s
@ stub _mbsncat_s_l @ stub _mbsncat_s_l
@ cdecl _mbsnccnt(str long) @ cdecl _mbsnccnt(str long)
@ stub _mbsnccnt_l @ cdecl _mbsnccnt_l(str long ptr)
@ cdecl _mbsncmp(str str long) @ cdecl _mbsncmp(str str long)
@ stub _mbsncmp_l @ stub _mbsncmp_l
@ stub _mbsncoll(str str long) @ stub _mbsncoll(str str long)
......
...@@ -822,7 +822,7 @@ ...@@ -822,7 +822,7 @@
@ stub _mbsncat_s @ stub _mbsncat_s
@ stub _mbsncat_s_l @ stub _mbsncat_s_l
@ cdecl _mbsnccnt(str long) @ cdecl _mbsnccnt(str long)
@ stub _mbsnccnt_l @ cdecl _mbsnccnt_l(str long ptr)
@ cdecl _mbsncmp(str str long) @ cdecl _mbsncmp(str str long)
@ stub _mbsncmp_l @ stub _mbsncmp_l
@ stub _mbsncoll(str str long) @ stub _mbsncoll(str str long)
......
...@@ -800,7 +800,7 @@ ...@@ -800,7 +800,7 @@
@ stub _mbsncat_s @ stub _mbsncat_s
@ stub _mbsncat_s_l @ stub _mbsncat_s_l
@ cdecl _mbsnccnt(str long) @ cdecl _mbsnccnt(str long)
@ stub _mbsnccnt_l @ cdecl _mbsnccnt_l(str long ptr)
@ cdecl _mbsncmp(str str long) @ cdecl _mbsncmp(str str long)
@ stub _mbsncmp_l @ stub _mbsncmp_l
@ stub _mbsncoll(str str long) @ stub _mbsncoll(str str long)
......
...@@ -2273,31 +2273,52 @@ unsigned char* CDECL _mbsnset(unsigned char* str, unsigned int c, size_t len) ...@@ -2273,31 +2273,52 @@ unsigned char* CDECL _mbsnset(unsigned char* str, unsigned int c, size_t len)
} }
/********************************************************************* /*********************************************************************
* _mbsnccnt(MSVCRT.@) * _mbsnccnt_l(MSVCRT.@)
* 'c' is for 'character'. * 'c' is for 'character'.
*/ */
size_t CDECL _mbsnccnt(const unsigned char* str, size_t len) size_t CDECL _mbsnccnt_l(const unsigned char* str, size_t len, _locale_t locale)
{ {
size_t ret; size_t ret;
if(get_mbcinfo()->ismbcodepage) pthreadmbcinfo mbcinfo;
{
ret=0; if (!len)
while(*str && len-- > 0) return 0;
if (!MSVCRT_CHECK_PMT(str))
return 0;
if (locale)
mbcinfo = locale->mbcinfo;
else
mbcinfo = get_mbcinfo();
if (mbcinfo->ismbcodepage)
{ {
if(_ismbblead(*str)) ret = 0;
{ while (*str && len-- > 0)
if (!len) {
break; if (_ismbblead_l(*str, locale))
len--; {
str++; if (!len)
} break;
str++; len--;
ret++; str++;
}
str++;
ret++;
}
return ret;
} }
return ret; ret = u_strlen(str);
} return min(ret, len); /* ASCII CP */
ret=u_strlen(str); }
return min(ret, len); /* ASCII CP */
/*********************************************************************
* _mbsnccnt(MSVCRT.@)
* 'c' is for 'character'.
*/
size_t CDECL _mbsnccnt(const unsigned char* str, size_t len)
{
return _mbsnccnt_l(str, len, NULL);
} }
/********************************************************************* /*********************************************************************
......
...@@ -771,7 +771,7 @@ ...@@ -771,7 +771,7 @@
# stub _mbsncat_s(str long str long) # stub _mbsncat_s(str long str long)
# stub _mbsncat_s_l(str long str long ptr) # stub _mbsncat_s_l(str long str long ptr)
@ cdecl _mbsnccnt(str long) @ cdecl _mbsnccnt(str long)
# stub _mbsnccnt_l(str long ptr) @ cdecl _mbsnccnt_l(str long ptr)
@ cdecl _mbsncmp(str str long) @ cdecl _mbsncmp(str str long)
# stub _mbsncmp_l(str str long ptr) # stub _mbsncmp_l(str str long ptr)
@ stub _mbsncoll(str str long) @ stub _mbsncoll(str str long)
......
...@@ -666,7 +666,7 @@ ...@@ -666,7 +666,7 @@
@ stub _mbsncat_s @ stub _mbsncat_s
@ stub _mbsncat_s_l @ stub _mbsncat_s_l
@ cdecl _mbsnccnt(str long) @ cdecl _mbsnccnt(str long)
@ stub _mbsnccnt_l @ cdecl _mbsnccnt_l(str long ptr)
@ cdecl _mbsncmp(str str long) @ cdecl _mbsncmp(str str long)
@ stub _mbsncmp_l @ stub _mbsncmp_l
@ stub _mbsncoll(str str long) @ stub _mbsncoll(str str long)
...@@ -1235,7 +1235,7 @@ ...@@ -1235,7 +1235,7 @@
@ stub _o__mbsncat_s @ stub _o__mbsncat_s
@ stub _o__mbsncat_s_l @ stub _o__mbsncat_s_l
@ cdecl _o__mbsnccnt(str long) _mbsnccnt @ cdecl _o__mbsnccnt(str long) _mbsnccnt
@ stub _o__mbsnccnt_l @ cdecl _o__mbsnccnt_l(str long ptr) _mbsnccnt_l
@ cdecl _o__mbsncmp(str str long) _mbsncmp @ cdecl _o__mbsncmp(str str long) _mbsncmp
@ stub _o__mbsncmp_l @ stub _o__mbsncmp_l
@ stub _o__mbsncoll @ stub _o__mbsncoll
......
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