.\" 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"
+.TH MBRLEN 3 2013-06-21 "GNU" "Linux Programmer's Manual"
.SH NAME
mbrlen \- determine number of bytes in next multibyte character
.SH SYNOPSIS
.SH DESCRIPTION
The
.BR mbrlen ()
-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.
+function inspects at most
+.I n
+bytes of the multibyte
+string starting at
+.I s
+and extracts the next complete multibyte character.
+It updates the shift state
+.IR *ps .
If the multibyte character is not the
null wide character, it returns the number of bytes that were consumed from
-\fIs\fP.
+.IR s .
If the multibyte character is the null wide character, it resets the
-shift state \fI*ps\fP to the initial state and returns 0.
+shift state
+.I *ps
+to the initial state and returns 0.
.PP
-If the \fIn\fP bytes starting at \fIs\fP do not contain a complete multibyte
+If the
+.IR n
+bytes starting at
+.I s
+do not contain a complete multibyte
character,
.BR mbrlen ()
-returns \fI(size_t)\ \-2\fP.
+returns
+.IR "(size_t)\ \-2" .
This can happen even if
-\fIn\fP >= \fIMB_CUR_MAX\fP, if the multibyte string contains redundant shift
+.I n
+>=
+.IR MB_CUR_MAX ,
+if the multibyte string contains redundant shift
sequences.
.PP
-If the multibyte string starting at \fIs\fP contains an invalid multibyte
+If the multibyte string starting at
+.I s
+contains an invalid multibyte
sequence before the next complete character,
.BR mbrlen ()
returns
-\fI(size_t)\ \-1\fP and sets \fIerrno\fP to \fBEILSEQ\fP.
+.IR "(size_t)\ \-1"
+and sets
+.I errno
+to
+.BR EILSEQ .
In this case,
-the effects on \fI*ps\fP are undefined.
+the effects on
+.I *ps
+are undefined.
.PP
-If \fIps\fP is a NULL pointer, a static anonymous state known only to the
+If
+.I ps
+is NULL, a static anonymous state known only to the
.BR mbrlen ()
function is used instead.
.SH RETURN VALUE
.BR mbrlen ()
function returns the number of bytes
parsed from the multibyte
-sequence starting at \fIs\fP, if a non-null wide character was recognized.
+sequence starting at
+.IR s ,
+if a non-null wide character was recognized.
It returns 0, if a null wide character was recognized.
It returns
.I "(size_t)\ \-1"
-and sets \fIerrno\fP to \fBEILSEQ\fP, if an invalid multibyte sequence was
+and sets
+.I errno
+to
+.BR EILSEQ ,
+if an invalid multibyte sequence was
encountered.
-It returns \fI(size_t)\ \-2\fP if it couldn't parse a complete multibyte
-character, meaning that \fIn\fP should be increased.
+It returns
+.IR "(size_t)\ \-2"
+if it couldn't parse a complete multibyte
+character, meaning that
+.I n
+should be increased.
+.SH ATTRIBUTES
+.SS Multithreading (see pthreads(7))
+The
+.BR mbrlen ()
+function is thread-safe with exceptions.
+It is not thread-safe if called with a NULL \fIps\fP parameter.
.SH CONFORMING TO
C99.
.SH NOTES
current locale.
.SH SEE ALSO
.BR mbrtowc (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/.