p Each character will be converted as if .Xr mbrtowc 3 is continuously called.
p After conversion, if .Fa pwcs is not NULL pointer, the pointer object pointed by .Fa s is NULL pointer (if the conversion is stopped due to reach a null byte) or the first byte of the character just after the last character converted.
p If .Fa pwcs is not null pointer and the conversion is stopped due to reach a null byte, the .Fn mbsrtowcs places the state object pointed by .Fa ps to an initial state after the conversion is taken place.
p The behaviour of the .Fn mbsrtowcs is affected by LC_CTYPE category of the current locale.
p There are special cases: l -tag -width 012345678901 t "s == NULL || *s == NULL" undefined (may causes the program to crash). t "pwcs == NULL" The conversion is taken place, but the result wide character string is discarded. In this case, the pointer object pointed by .Fa s is not modified and .Fa n is ignored. t "ps == NULL" The .Fn mbsrtowcs uses its own internal state object to keep the conversion state, instead of .Fa ps mentioned in this manual page.
p
Calling any other functions in the
.Lb libc
never change the internal
state of the
.Fn mbsrtowcs ,
that is initialized at startup time of the program.
.El
----------------------------------------------------------------------
.Sh RETURN VALUES
The
.Fn mbsrtowcs
returns
l -tag -width 012345678901 t 0 or positive The value returned is the number of elements stored to the array pointed by
.Fa pwcs ,
except for a terminate null wide character (if any).
If
.Fa pwcs
is not null and the value returned is equal to
.Fa n ,
the wide character string pointed by
.Fa pwcs
is not null terminated.
If
.Fa pwcs
is a null pointer, the value returned is the number of elements to contain
the whole string converted, except for a terminate null wide character.
t (size_t)-1 The array indirectly pointed by
.Fa s
contains a byte sequence forming invalid character.
In this case, the
.Fn mbsrtowcs
sets errno to indicate the error.
.El
----------------------------------------------------------------------
.Sh ERRORS
The
.Fn mbsrtowcs
may causes an error in the following case:
l -tag -width Er t Bq Er EILSEQ The pointer pointed by
.Fa s
points an invalid or incomplete multibyte character.
t Bq Er EINVAL .Fa ps
points an invalid or uninitialized mbstate_t object.
.El
----------------------------------------------------------------------
.Sh SEE ALSO
.Xr mbrtowc 3 ,
.Xr mbstowcs 3 ,
.Xr setlocale 3
----------------------------------------------------------------------
.Sh STANDARDS
The
.Fn mbsrtowcs
function conforms to
.St -isoC-amd1 .
The restrict qualifier is added at
.St -isoC-99 .