MBSRTOWCS(3C) Standard C Library Functions MBSRTOWCS(3C)
NAME
mbsnrtowcs, mbsnrtowcs_l, mbsrtowcs, mbsrtowcs_l - convert a
character string to a wide-character string (restartable)
SYNOPSIS
#include <wchar.h>
size_t mbsnrtowcs(
wchar_t *restrict dst,
const char **restrict src,
size_t nms,
size_t len,
mbstate_t *restrict ps);
size_t mbsrtowcs(
wchar_t *restrict dst,
const char **restrict src,
size_t len,
mbstate_t *restrict ps);
#include <wchar.h>
#include <xlocale.h>
size_t mbsnrtowcs_l(
wchar_t *restrict dst,
const char **restrict src,
size_t nms,
size_t len,
mbstate_t *restrict ps,
locale_t loc);
size_t mbsrtowcs_l(
wchar_t *restrict dst,
const char **restrict src,
size_t len,
mbstate_t *restrict ps,
locale_t loc);
DESCRIPTION
These function converts a sequence of characters, beginning in the
conversion state described by the object pointed to by
ps, from the
array indirectly pointed to by
src into a sequence of corresponding
wide-characters. If
dst is not a null pointer, the converted
characters are stored into the array pointed to by
dst. Conversion
continues up to and including a terminating null character, which is
also stored. Conversion stops early in either of the following
cases:
o When a sequence of bytes is encountered that does not form
a valid character.
o When
len codes have been stored into the array pointed to
by
dst (and
dst is not a null pointer).
Each conversion takes place as if by a call to the
mbrtowc() function.
If
dst is not a null pointer, the pointer object pointed to by
src is
assigned either a null pointer (if conversion stopped due to reaching
a terminating null character) or the address just past the last
character converted (if any). If conversion stopped due to reaching
a terminating null character, and if
dst is not a null pointer, the
resulting state described is the initial conversion state.
If
ps is a null pointer, these functions uses their own internal
mbstate_t object, which is initialized at program startup to the
initial conversion state. Otherwise, the
mbstate_t object pointed to
by
ps is used to completely describe the current conversion state of
the associated character sequence. The system will behave as if no
function defined in the Reference Manual calls any of these
functions.
The function
mbsnrtowcs() behaves identically to
mbsrtowcs(), except
the conversion stops after reading
nms bytes from the buffer pointed
to by
src.
The behavior of
mbnrtowcs() and
mbsrtowcs() functions are affected by
the
LC_CTYPE category of the current locale. See
environ(7). The
functions
mbsrtowcs_l() and
mbsnrtowcs_l() behave identically to
mbsrtowcs() and
mbsnrtowcs(), except that instead of using the
current locale, they use the locale specified by
loc.
RETURN VALUES
If the input conversion encounters a sequence of bytes that do not
form a valid character, an encoding error occurs. In this case,
these functions store the value of the macro
EILSEQ in
errno and
return
(size_t)-1; the conversion state is undefined. Otherwise,
they return the number of characters successfully converted, not
including the terminating null (if any).
ERRORS
These functions may fail if:
EINVAL The
ps argument points to an object that contains an
invalid conversion state.
EILSEQ Invalid character sequence is detected.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | See below. |
+--------------------+-----------------+
|MT-Level | See below. |
+--------------------+-----------------+
The
mbsnrtowcs() and
mbsrtowcs() functions are Standard. The
mbsnrtowcs_l() and
mbsrtowcs_l() functions are Uncommitted.
If
ps is not a null pointer, these functions use the
mbstate_t object
pointed to by
ps and can be used safely in multithreaded
applications, otherwise they use an internal
mbstate_t object and are
Unsafe in multithreaded applications.
SEE ALSO
mbrtowc(3C),
mbsinit(3C),
newlocale(3C),
setlocale(3C),
uselocale(),
attributes(7),
environ(7),
standards(7) December 28, 2020 MBSRTOWCS(3C)