]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man3/mbsnrtowcs.3
hyphen/dash fixes
[thirdparty/man-pages.git] / man3 / mbsnrtowcs.3
CommitLineData
fea681da
MK
1.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
2.\"
3.\" This is free documentation; you can redistribute it and/or
4.\" modify it under the terms of the GNU General Public License as
5.\" published by the Free Software Foundation; either version 2 of
6.\" the License, or (at your option) any later version.
7.\"
8.\" References consulted:
9.\" GNU glibc-2 source code and manual
10.\" Dinkumware C library reference http://www.dinkumware.com/
11.\" OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
12.\"
13.TH MBSNRTOWCS 3 1999-07-25 "GNU" "Linux Programmer's Manual"
14.SH NAME
15mbsnrtowcs \- convert a multibyte string to a wide character string
16.SH SYNOPSIS
17.nf
18.B #include <wchar.h>
19.sp
20.BI "size_t mbsnrtowcs(wchar_t *" dest ", const char **" src ,
21.BI " size_t " nms ", size_t " len ", mbstate_t *" ps );
22.fi
23.SH DESCRIPTION
24The \fBmbsnrtowcs\fP function is like the \fBmbsrtowcs\fP function, except that
25the number of bytes to be converted, starting at \fI*src\fP, is limited to
26\fInms\fP.
27.PP
28If \fIdest\fP is not a NULL pointer, the \fBmbsnrtowcs\fP function converts at
29most \fInms\fP bytes from the
30multibyte string \fI*src\fP to a wide-character string starting at \fIdest\fP.
31At most \fIlen\fP wide characters are written to \fIdest\fP. The shift state
32\fI*ps\fP is updated. The conversion is effectively performed by repeatedly
33calling mbrtowc(\fIdest\fP,\fI*src\fP,\fIn\fP,\fIps\fP) where \fIn\fP is some
34positive number, as long as this call succeeds, and then incrementing
35\fIdest\fP by one and \fI*src\fP by the number of bytes consumed. The
36conversion can stop for three reasons:
37.PP
381. An invalid multibyte sequence has been encountered. In this case \fI*src\fP
2bc2f479 39is left pointing to the invalid multibyte sequence, (size_t)(\-1) is returned,
fea681da
MK
40and \fBerrno\fP is set to \fBEILSEQ\fP.
41.PP
422. The \fInms\fP limit forces a stop, or \fIlen\fP non-L'\\0' wide characters
43have been stored at \fIdest\fP. In this case \fI*src\fP is left pointing to the
44next multibyte sequence to be converted, and the number of wide characters
45written to \fIdest\fP is returned.
46.PP
473. The multibyte string has been completely converted, including the
48terminating '\\0' (which has the side effect of bringing back \fI*ps\fP to the
49initial state). In this case \fI*src\fP is set to NULL, and the number of wide
50characters written to \fIdest\fP, excluding the terminating L'\\0' character,
51is returned.
52.PP
53If \fIdest\fP is NULL, \fIlen\fP is ignored, and the conversion proceeds as
54above, except that the converted wide characters are not written out to memory,
55and that no destination length limit exists.
56.PP
57In both of the above cases, if \fIps\fP is a NULL pointer, a static anonymous
58state only known to the mbsnrtowcs function is used instead.
59.PP
60The programmer must ensure that there is room for at least \fIlen\fP wide
61characters at \fIdest\fP.
62.SH "RETURN VALUE"
63The \fBmbsnrtowcs\fP function returns the number of wide characters that make
64up the converted part of the wide character string, not including the
65terminating null wide character. If an invalid multibyte sequence was
2bc2f479 66encountered, (size_t)(\-1) is returned, and \fBerrno\fP set to \fBEILSEQ\fP.
fea681da
MK
67.SH "CONFORMING TO"
68This function is a GNU extension.
69.SH "SEE ALSO"
70.BR iconv (3),
71.BR mbsrtowcs (3)
72.SH NOTES
73The behaviour of \fBmbsnrtowcs\fP depends on the LC_CTYPE category of the
74current locale.
75.PP
76Passing NULL as \fIps\fP is not multi-thread safe.