diff options
Diffstat (limited to 'man3/mbtowc.3')
-rw-r--r-- | man3/mbtowc.3 | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/man3/mbtowc.3 b/man3/mbtowc.3 new file mode 100644 index 000000000..4934e8d24 --- /dev/null +++ b/man3/mbtowc.3 @@ -0,0 +1,66 @@ +.\" Copyright (c) Bruno Haible <haible@clisp.cons.org> +.\" +.\" This is free documentation; you can redistribute it and/or +.\" modify it under the terms of the GNU General Public License as +.\" published by the Free Software Foundation; either version 2 of +.\" the License, or (at your option) any later version. +.\" +.\" References consulted: +.\" GNU glibc-2 source code and manual +.\" Dinkumware C library reference http://www.dinkumware.com/ +.\" OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html +.\" ISO/IEC 9899:1999 +.\" +.TH MBTOWC 3 2001-07-04 "GNU" "Linux Programmer's Manual" +.SH NAME +mbtowc \- convert a multibyte sequence to a wide character +.SH SYNOPSIS +.nf +.B #include <stdlib.h> +.sp +.BI "int mbtowc(wchar_t *" pwc ", const char *" s ", size_t " n ); +.fi +.SH DESCRIPTION +The main case for this function is when \fIs\fP is not NULL and \fIpwc\fP is +not NULL. In this case, the \fBmbtowc\fP function inspects at most \fIn\fP +bytes of the multibyte string starting at \fIs\fP, extracts the next complete +multibyte character, converts it to a wide character and stores it at +\fI*pwc\fP. It updates an internal shift state only known to the mbtowc +function. If \fIs\fP does not point to a '\\0' byte, it returns the number +of bytes that were consumed from \fIs\fP, otherwise it returns 0. +.PP +If the \fIn\fP bytes starting at \fIs\fP do not contain a complete multibyte +character, or if they contain an invalid multibyte sequence, \fBmbtowc\fP +returns \fI-1\fP. This can happen even if \fIn\fP >= \fIMB_CUR_MAX\fP, +if the multibyte string contains redundant shift sequences. +.PP +A different case is when \fIs\fP is not NULL but \fIpwc\fP is NULL. In this +case the \fBmbtowc\fP function behaves as above, excepts that it does not +store the converted wide character in memory. +.PP +A third case is when \fIs\fP is NULL. In this case, \fIpwc\fP and \fIn\fP are +ignored. The \fBmbtowc\fP function +.\" The Dinkumware doc and the Single Unix specification say this, but +.\" glibc doesn't implement this. +resets the shift state, only known to this function, to the initial state, and +returns non-zero if the encoding has non-trivial shift state, or zero if the +encoding is stateless. +.SH "RETURN VALUE" +If \fIs\fP is not NULL, the \fBmbtowc\fP function returns the number of +consumed bytes starting at \fIs\fP, or 0 if \fIs\fP points to a null byte, +or \-1 upon failure. +.PP +If \fIs\fP is NULL, the \fBmbtowc\fP function returns non-zero if the encoding +has non-trivial shift state, or zero if the encoding is stateless. +.SH "CONFORMING TO" +ISO/ANSI C, UNIX98 +.SH "SEE ALSO" +.BR MB_CUR_MAX (3), +.BR mbrtowc (3), +.BR mbstowcs (3) +.SH NOTES +The behaviour of \fBmbtowc\fP depends on the LC_CTYPE category of the +current locale. +.PP +This function is not multi-thread safe. The function \fBmbrtowc\fP provides +a better interface to the same functionality. |