.\" Dinkumware C library reference http://www.dinkumware.com/
.\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
.\"
-.TH WCSNRTOMBS 3 2011-10-16 "GNU" "Linux Programmer's Manual"
+.TH WCSNRTOMBS 3 2014-03-18 "GNU" "Linux Programmer's Manual"
.SH NAME
wcsnrtombs \- convert a wide-character string to a multibyte string
.SH SYNOPSIS
.BR wcsrtombs (3)
function,
except that the number of wide characters to be converted,
-starting at \fI*src\fP, is limited to \fInwc\fP.
+starting at
+.IR *src ,
+is limited to
+.IR nwc .
.PP
-If \fIdest\fP is not a NULL pointer,
+If
+.I dest
+is not NULL,
the
.BR wcsnrtombs ()
function converts
-at most \fInwc\fP wide characters from
-the wide-character string \fI*src\fP to a multibyte string starting at
-\fIdest\fP.
-At most \fIlen\fP bytes are written to \fIdest\fP.
+at most
+.I nwc
+wide characters from
+the wide-character string
+.I *src
+to a multibyte string starting at
+.IR dest .
+At most
+.I len
+bytes are written to
+.IR dest .
The shift state
-\fI*ps\fP is updated.
+.I *ps
+is updated.
The conversion is effectively performed by repeatedly
calling
.IR "wcrtomb(dest, *src, ps)" ,
as long as this call succeeds,
-and then incrementing \fIdest\fP by the
-number of bytes written and \fI*src\fP
+and then incrementing
+.I dest
+by the
+number of bytes written and
+.I *src
by one.
The conversion can stop for three reasons:
-.PP
-1. A wide character has been encountered that can not be represented as a
+.IP 1. 3
+A wide character has been encountered that can not be represented as a
multibyte sequence (according to the current locale).
-In this case \fI*src\fP
+In this case,
+.I *src
is left pointing to the invalid wide character,
.I (size_t)\ \-1
is returned,
-and \fIerrno\fP is set to \fBEILSEQ\fP.
-.PP
-2. \fInwc\fP wide characters have been
+and
+.I errno
+is set to
+.BR EILSEQ .
+.IP 2.
+.I nwc
+wide characters have been
converted without encountering a null wide character (L\(aq\\0\(aq),
or the length limit forces a stop.
-In this case \fI*src\fP is left pointing
+In this case,
+.I *src
+is left pointing
to the next wide character to be converted, and the number of bytes written
-to \fIdest\fP is returned.
-.PP
-3. The wide-character string has been completely converted, including the
-terminating null wide character (which has the side effect of bringing back \fI*ps\fP
+to
+.I dest
+is returned.
+.IP 3.
+The wide-character string has been completely converted, including the
+terminating null wide character (which has the side effect of bringing back
+.I *ps
to the initial state).
-In this case \fI*src\fP is set to NULL, and the number
-of bytes written to \fIdest\fP,
+In this case,
+.I *src
+is set to NULL, and the number
+of bytes written to
+.IR dest ,
excluding the terminating null byte (\(aq\\0\(aq), is
returned.
.PP
-If \fIdest\fP is NULL, \fIlen\fP is ignored,
+If
+.IR dest
+is NULL,
+.I len
+is ignored,
and the conversion proceeds as above,
except that the converted bytes are not written out to memory, and that
no destination length limit exists.
.PP
In both of the above cases,
-if \fIps\fP is a NULL pointer, a static anonymous
-state only known to the wcsnrtombs function is used instead.
+if
+.I ps
+is NULL, a static anonymous
+state known only to the
+.BR wcsnrtombs ()
+function is used instead.
.PP
-The programmer must ensure that there is room for at least \fIlen\fP bytes
-at \fIdest\fP.
+The programmer must ensure that there is room for at least
+.I len
+bytes
+at
+.IR dest .
.SH RETURN VALUE
The
.BR wcsnrtombs ()
If a wide character was encountered which
could not be converted,
.I (size_t)\ \-1
-is returned, and \fIerrno\fP set to \fBEILSEQ\fP.
+is returned, and
+.I errno
+set to
+.BR EILSEQ .
.SH CONFORMING TO
POSIX.1-2008.
.SH NOTES
category of the
current locale.
.PP
-Passing NULL as \fIps\fP is not multithread safe.
+Passing NULL as
+.I ps
+is not multithread safe.
.SH SEE ALSO
.BR iconv (3),
+.BR mbsinit (3),
.BR wcsrtombs (3)
+.SH COLOPHON
+This page is part of release 3.79 of the Linux
+.I man-pages
+project.
+A description of the project,
+information about reporting bugs,
+and the latest version of this page,
+can be found at
+\%http://www.kernel.org/doc/man\-pages/.