msvcrt: Add mbsrtowcs_s implementation.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Piotr Caban 2016-05-16 13:29:41 +02:00 committed by Alexandre Julliard
parent 4f5a68412b
commit 540d969150
10 changed files with 38 additions and 9 deletions

View File

@ -88,7 +88,7 @@
@ stub mbrtoc32 @ stub mbrtoc32
@ cdecl mbrtowc(ptr str long ptr) ucrtbase.mbrtowc @ cdecl mbrtowc(ptr str long ptr) ucrtbase.mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) ucrtbase.mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) ucrtbase.mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) ucrtbase.mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) ucrtbase.mbstowcs @ cdecl mbstowcs(ptr str long) ucrtbase.mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) ucrtbase.mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) ucrtbase.mbstowcs_s
@ cdecl mbtowc(ptr str long) ucrtbase.mbtowc @ cdecl mbtowc(ptr str long) ucrtbase.mbtowc

View File

@ -1745,7 +1745,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen @ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc @ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) MSVCRT_mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs @ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc @ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View File

@ -2103,7 +2103,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen @ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc @ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) MSVCRT_mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs @ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc @ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View File

@ -2280,7 +2280,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen @ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc @ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) MSVCRT_mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs @ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc @ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View File

@ -1943,7 +1943,7 @@
@ cdecl mbrlen(ptr long ptr) msvcr120.mbrlen @ cdecl mbrlen(ptr long ptr) msvcr120.mbrlen
@ cdecl mbrtowc(ptr str long ptr) msvcr120.mbrtowc @ cdecl mbrtowc(ptr str long ptr) msvcr120.mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) msvcr120.mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) msvcr120.mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) msvcr120.mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) msvcr120.mbstowcs @ cdecl mbstowcs(ptr str long) msvcr120.mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) msvcr120.mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) msvcr120.mbstowcs_s
@ cdecl mbtowc(ptr str long) msvcr120.mbtowc @ cdecl mbtowc(ptr str long) msvcr120.mbtowc

View File

@ -1425,7 +1425,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen @ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc @ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) MSVCRT_mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs @ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc @ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View File

@ -1398,7 +1398,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen @ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc @ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) MSVCRT_mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs @ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc @ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View File

@ -2370,6 +2370,35 @@ MSVCRT_size_t CDECL MSVCRT_mbsrtowcs(MSVCRT_wchar_t *wcstr,
return ret; return ret;
} }
/*********************************************************************
* mbsrtowcs_s(MSVCRT.@)
*/
int CDECL MSVCRT_mbsrtowcs_s(MSVCRT_size_t *ret, MSVCRT_wchar_t *wcstr, MSVCRT_size_t len,
const char **mbstr, MSVCRT_size_t count, MSVCRT_mbstate_t *state)
{
MSVCRT_size_t tmp;
if(!ret) ret = &tmp;
if(!MSVCRT_CHECK_PMT(!!wcstr == !!len)) {
*ret = -1;
return MSVCRT_EINVAL;
}
*ret = MSVCRT_mbsrtowcs(wcstr, mbstr, count>len ? len : count, state);
if(*ret == -1) {
if(wcstr) *wcstr = 0;
return *MSVCRT__errno();
}
(*ret)++;
if(*ret > len) {
/* no place for terminating '\0' */
if(wcstr) *wcstr = 0;
return 0;
}
if(wcstr) wcstr[(*ret)-1] = 0;
return 0;
}
/********************************************************************* /*********************************************************************
* _mbctohira (MSVCRT.@) * _mbctohira (MSVCRT.@)
* *

View File

@ -1365,7 +1365,7 @@
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc @ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
# stub mbsdup_dbg(wstr long ptr long) # stub mbsdup_dbg(wstr long ptr long)
@ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs
# stub mbsrtowcs_s(ptr ptr long ptr long ptr) @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) MSVCRT_mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs @ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc @ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View File

@ -2415,7 +2415,7 @@
@ stub mbrtoc32 @ stub mbrtoc32
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc @ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs @ cdecl mbsrtowcs(ptr ptr long ptr) MSVCRT_mbsrtowcs
@ stub mbsrtowcs_s @ cdecl mbsrtowcs_s(ptr ptr long ptr long ptr) MSVCRT_mbsrtowcs_s
@ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs @ cdecl mbstowcs(ptr str long) MSVCRT_mbstowcs
@ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s @ cdecl mbstowcs_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc @ cdecl mbtowc(ptr str long) MSVCRT_mbtowc