msvcrt: Add mbsnlen_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
bce8330f99
commit
f097c2be11
|
@ -112,7 +112,7 @@
|
|||
@ cdecl _mbsinc(str) ucrtbase._mbsinc
|
||||
@ stub _mbsinc_l
|
||||
@ cdecl _mbslen(str) ucrtbase._mbslen
|
||||
@ stub _mbslen_l
|
||||
@ cdecl _mbslen_l(str ptr) ucrtbase._mbslen_l
|
||||
@ cdecl _mbslwr(str) ucrtbase._mbslwr
|
||||
@ stub _mbslwr_l
|
||||
@ cdecl _mbslwr_s(str long) ucrtbase._mbslwr_s
|
||||
|
@ -161,8 +161,8 @@
|
|||
@ stub _mbsnicoll_l
|
||||
@ cdecl _mbsninc(str long) ucrtbase._mbsninc
|
||||
@ stub _mbsninc_l
|
||||
@ stub _mbsnlen
|
||||
@ stub _mbsnlen_l
|
||||
@ cdecl _mbsnlen(str long) ucrtbase._mbsnlen
|
||||
@ cdecl _mbsnlen_l(str long ptr) ucrtbase._mbsnlen_l
|
||||
@ cdecl _mbsnset(ptr long long) ucrtbase._mbsnset
|
||||
@ stub _mbsnset_l
|
||||
@ stub _mbsnset_s
|
||||
|
|
|
@ -1118,7 +1118,7 @@
|
|||
@ cdecl _mbsinc(str)
|
||||
@ stub _mbsinc_l
|
||||
@ cdecl _mbslen(str)
|
||||
@ stub _mbslen_l
|
||||
@ cdecl _mbslen_l(str ptr)
|
||||
@ cdecl _mbslwr(str)
|
||||
@ stub _mbslwr_l
|
||||
@ cdecl _mbslwr_s(str long)
|
||||
|
@ -1167,8 +1167,8 @@
|
|||
@ stub _mbsnicoll_l
|
||||
@ cdecl _mbsninc(str long)
|
||||
@ stub _mbsninc_l
|
||||
@ stub _mbsnlen
|
||||
@ stub _mbsnlen_l
|
||||
@ cdecl _mbsnlen(str long)
|
||||
@ cdecl _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnset(ptr long long)
|
||||
@ stub _mbsnset_l
|
||||
@ stub _mbsnset_s
|
||||
|
|
|
@ -1475,7 +1475,7 @@
|
|||
@ cdecl _mbsinc(str)
|
||||
@ stub _mbsinc_l
|
||||
@ cdecl _mbslen(str)
|
||||
@ stub _mbslen_l
|
||||
@ cdecl _mbslen_l(str ptr)
|
||||
@ cdecl _mbslwr(str)
|
||||
@ stub _mbslwr_l
|
||||
@ cdecl _mbslwr_s(str long)
|
||||
|
@ -1524,8 +1524,8 @@
|
|||
@ stub _mbsnicoll_l
|
||||
@ cdecl _mbsninc(str long)
|
||||
@ stub _mbsninc_l
|
||||
@ stub _mbsnlen
|
||||
@ stub _mbsnlen_l
|
||||
@ cdecl _mbsnlen(str long)
|
||||
@ cdecl _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnset(ptr long long)
|
||||
@ stub _mbsnset_l
|
||||
@ stub _mbsnset_s
|
||||
|
|
|
@ -1485,7 +1485,7 @@
|
|||
@ cdecl _mbsinc(str)
|
||||
@ stub _mbsinc_l
|
||||
@ cdecl _mbslen(str)
|
||||
@ stub _mbslen_l
|
||||
@ cdecl _mbslen_l(str ptr)
|
||||
@ cdecl _mbslwr(str)
|
||||
@ stub _mbslwr_l
|
||||
@ cdecl _mbslwr_s(str long)
|
||||
|
@ -1534,8 +1534,8 @@
|
|||
@ stub _mbsnicoll_l
|
||||
@ cdecl _mbsninc(str long)
|
||||
@ stub _mbsninc_l
|
||||
@ stub _mbsnlen
|
||||
@ stub _mbsnlen_l
|
||||
@ cdecl _mbsnlen(str long)
|
||||
@ cdecl _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnset(ptr long long)
|
||||
@ stub _mbsnset_l
|
||||
@ stub _mbsnset_s
|
||||
|
|
|
@ -790,7 +790,7 @@
|
|||
@ cdecl _mbsinc(str)
|
||||
@ stub _mbsinc_l
|
||||
@ cdecl _mbslen(str)
|
||||
@ stub _mbslen_l
|
||||
@ cdecl _mbslen_l(str ptr)
|
||||
@ cdecl _mbslwr(str)
|
||||
@ stub _mbslwr_l
|
||||
@ cdecl _mbslwr_s(str long)
|
||||
|
@ -839,8 +839,8 @@
|
|||
@ stub _mbsnicoll_l
|
||||
@ cdecl _mbsninc(str long)
|
||||
@ stub _mbsninc_l
|
||||
@ stub _mbsnlen
|
||||
@ stub _mbsnlen_l
|
||||
@ cdecl _mbsnlen(str long)
|
||||
@ cdecl _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnset(ptr long long)
|
||||
@ stub _mbsnset_l
|
||||
@ stub _mbsnset_s
|
||||
|
|
|
@ -768,7 +768,7 @@
|
|||
@ cdecl _mbsinc(str)
|
||||
@ stub _mbsinc_l
|
||||
@ cdecl _mbslen(str)
|
||||
@ stub _mbslen_l
|
||||
@ cdecl _mbslen_l(str ptr)
|
||||
@ cdecl _mbslwr(str)
|
||||
@ stub _mbslwr_l
|
||||
@ cdecl _mbslwr_s(str long)
|
||||
|
@ -817,8 +817,8 @@
|
|||
@ stub _mbsnicoll_l
|
||||
@ cdecl _mbsninc(str long)
|
||||
@ stub _mbsninc_l
|
||||
@ stub _mbsnlen
|
||||
@ stub _mbsnlen_l
|
||||
@ cdecl _mbsnlen(str long)
|
||||
@ cdecl _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnset(ptr long long)
|
||||
@ stub _mbsnset_l
|
||||
@ stub _mbsnset_s
|
||||
|
|
|
@ -568,24 +568,59 @@ unsigned char* CDECL _mbsninc(const unsigned char* str, MSVCRT_size_t num)
|
|||
return (unsigned char*)str;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _mbsnlen_l(MSVCRT.@)
|
||||
*/
|
||||
MSVCRT_size_t CDECL _mbsnlen_l(const unsigned char *str,
|
||||
MSVCRT_size_t maxsize, MSVCRT__locale_t locale)
|
||||
{
|
||||
MSVCRT_pthreadmbcinfo mbcinfo;
|
||||
MSVCRT_size_t i = 0, len = 0;
|
||||
|
||||
if(!locale)
|
||||
mbcinfo = get_mbcinfo();
|
||||
else
|
||||
mbcinfo = locale->mbcinfo;
|
||||
|
||||
if(!mbcinfo->ismbcodepage)
|
||||
return MSVCRT_strnlen((const char*)str, maxsize);
|
||||
|
||||
while(i<maxsize && str[i])
|
||||
{
|
||||
if (_ismbblead_l(str[i], locale))
|
||||
{
|
||||
i++;
|
||||
if (!str[i]) /* count only full chars */
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
len++;
|
||||
}
|
||||
return i < maxsize ? len : maxsize;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _mbslen(MSVCRT.@)
|
||||
*/
|
||||
MSVCRT_size_t CDECL _mbslen(const unsigned char* str)
|
||||
{
|
||||
MSVCRT_size_t len = 0;
|
||||
while(*str)
|
||||
{
|
||||
if (_ismbblead(*str))
|
||||
{
|
||||
str++;
|
||||
if (!*str) /* count only full chars */
|
||||
break;
|
||||
}
|
||||
str++;
|
||||
len++;
|
||||
}
|
||||
return len;
|
||||
return _mbsnlen_l(str, -1, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _mbslen_l(MSVCRT.@)
|
||||
*/
|
||||
MSVCRT_size_t CDECL _mbslen_l(const unsigned char* str, MSVCRT__locale_t locale)
|
||||
{
|
||||
return _mbsnlen_l(str, -1, locale);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _mbsnlen(MSVCRT.@)
|
||||
*/
|
||||
MSVCRT_size_t CDECL _mbsnlen(const unsigned char* str, MSVCRT_size_t maxsize)
|
||||
{
|
||||
return _mbsnlen_l(str, maxsize, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
|
|
|
@ -737,7 +737,7 @@
|
|||
@ cdecl _mbsinc(str)
|
||||
# stub _mbsinc_l(str ptr)
|
||||
@ cdecl _mbslen(str)
|
||||
# stub _mbslen_l(str ptr)
|
||||
@ cdecl _mbslen_l(str ptr)
|
||||
@ cdecl _mbslwr(str)
|
||||
# stub _mbslwr_l(str ptr)
|
||||
@ cdecl _mbslwr_s(str long)
|
||||
|
@ -786,8 +786,8 @@
|
|||
# stub _mbsnicoll_l(str str long ptr)
|
||||
@ cdecl _mbsninc(str long)
|
||||
# stub _mbsninc_l(str long ptr)
|
||||
# stub _mbsnlen(str long)
|
||||
# stub _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnlen(str long)
|
||||
@ cdecl _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnset(ptr long long)
|
||||
# stub _mbsnset_l(ptr long long ptr)
|
||||
# stub _mbsnset_s(ptr long long long)
|
||||
|
|
|
@ -631,7 +631,7 @@
|
|||
@ cdecl _mbsinc(str)
|
||||
@ stub _mbsinc_l
|
||||
@ cdecl _mbslen(str)
|
||||
@ stub _mbslen_l
|
||||
@ cdecl _mbslen_l(str ptr)
|
||||
@ cdecl _mbslwr(str)
|
||||
@ stub _mbslwr_l
|
||||
@ cdecl _mbslwr_s(str long)
|
||||
|
@ -680,8 +680,8 @@
|
|||
@ stub _mbsnicoll_l
|
||||
@ cdecl _mbsninc(str long)
|
||||
@ stub _mbsninc_l
|
||||
@ stub _mbsnlen
|
||||
@ stub _mbsnlen_l
|
||||
@ cdecl _mbsnlen(str long)
|
||||
@ cdecl _mbsnlen_l(str long ptr)
|
||||
@ cdecl _mbsnset(ptr long long)
|
||||
@ stub _mbsnset_l
|
||||
@ stub _mbsnset_s
|
||||
|
|
Loading…
Reference in New Issue