mirror of
https://github.com/reactos/wine.git
synced 2024-11-28 14:10:32 +00:00
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:
parent
4f5a68412b
commit
540d969150
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.@)
|
||||
*
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user