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
@ cdecl mbrtowc(ptr str long ptr) ucrtbase.mbrtowc
@ 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_s(ptr ptr long str long) ucrtbase.mbstowcs_s
@ cdecl mbtowc(ptr str long) ucrtbase.mbtowc

View file

@ -1745,7 +1745,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ 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_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View file

@ -2103,7 +2103,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ 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_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View file

@ -2280,7 +2280,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ 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_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View file

@ -1943,7 +1943,7 @@
@ cdecl mbrlen(ptr long ptr) msvcr120.mbrlen
@ cdecl mbrtowc(ptr str long ptr) msvcr120.mbrtowc
@ 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_s(ptr ptr long str long) msvcr120.mbstowcs_s
@ cdecl mbtowc(ptr str long) msvcr120.mbtowc

View file

@ -1425,7 +1425,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ 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_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View file

@ -1398,7 +1398,7 @@
@ cdecl mbrlen(ptr long ptr) MSVCRT_mbrlen
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ 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_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ 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;
}
/*********************************************************************
* 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.@)
*

View file

@ -1365,7 +1365,7 @@
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
# stub mbsdup_dbg(wstr long ptr long)
@ 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_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc

View file

@ -2415,7 +2415,7 @@
@ stub mbrtoc32
@ cdecl mbrtowc(ptr str long ptr) MSVCRT_mbrtowc
@ 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_s(ptr ptr long str long) MSVCRT__mbstowcs_s
@ cdecl mbtowc(ptr str long) MSVCRT_mbtowc