summaryrefslogtreecommitdiffstats
path: root/man3/mbrlen.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/mbrlen.3')
-rw-r--r--man3/mbrlen.356
1 files changed, 56 insertions, 0 deletions
diff --git a/man3/mbrlen.3 b/man3/mbrlen.3
new file mode 100644
index 000000000..ca9ecc0c1
--- /dev/null
+++ b/man3/mbrlen.3
@@ -0,0 +1,56 @@
+.\" 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 MBRLEN 3 1999-07-25 "GNU" "Linux Programmer's Manual"
+.SH NAME
+mbrlen \- determine number of bytes in next multibyte character
+.SH SYNOPSIS
+.nf
+.B #include <wchar.h>
+.sp
+.BI "size_t mbrlen(const char *" s ", size_t " n ", mbstate_t *" ps );
+.fi
+.SH DESCRIPTION
+The \fBmbrlen\fP function inspects at most \fIn\fP bytes of the multibyte
+string starting at \fIs\fP and extracts the next complete multibyte character.
+It updates the shift state \fI*ps\fP. If the multibyte character is not the
+null wide character, it returns the number of bytes that were consumed from
+\fIs\fP. If the multibyte character is the null wide character, it resets the
+shift state \fI*ps\fP to the initial state and returns 0.
+.PP
+If the \fIn\fP bytes starting at \fIs\fP do not contain a complete multibyte
+character, \fBmbrlen\fP returns \fI(size_t)(-2)\fP. This can happen even if
+\fIn\fP >= \fIMB_CUR_MAX\fP, if the multibyte string contains redundant shift
+sequences.
+.PP
+If the multibyte string starting at \fIs\fP contains an invalid multibyte
+sequence before the next complete character, \fBmbrlen\fP returns
+\fI(size_t)(-1)\fP and sets \fBerrno\fP to \fBEILSEQ\fP. In this case,
+the effects on \fI*ps\fP are undefined.
+.PP
+If \fIps\fP is a NULL pointer, a static anonymous state only known to the
+mbrlen function is used instead.
+.SH "RETURN VALUE"
+The \fBmbrlen\fP function returns the number of bytes parsed from the multibyte
+sequence starting at \fIs\fP, if a non-null wide character was recognized.
+It returns 0, if a null wide character was recognized. It returns (size_t)(-1)
+and sets \fBerrno\fP to \fBEILSEQ\fP, if an invalid multibyte sequence was
+encountered. It returns (size_t)(-2) if it couldn't parse a complete multibyte
+character, meaning that \fIn\fP should be increased.
+.SH "CONFORMING TO"
+ISO/ANSI C, UNIX98
+.SH "SEE ALSO"
+.BR mbrtowc (3)
+.SH NOTES
+The behaviour of \fBmbrlen\fP depends on the LC_CTYPE category of the
+current locale.