man-pages/man3/mbrlen.3

74 lines
2.4 KiB
Groff
Raw Normal View History

2004-11-03 13:51:07 +00:00
.\" 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
.BR mbrlen ()
function inspects at most \fIn\fP bytes of the multibyte
2004-11-03 13:51:07 +00:00
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
2004-11-03 13:51:07 +00:00
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
2004-11-03 13:51:07 +00:00
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,
.BR mbrlen ()
returns \fI(size_t)(\-2)\fP.
This can happen even if
2004-11-03 13:51:07 +00:00
\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,
.BR mbrlen ()
returns
\fI(size_t)(\-1)\fP and sets \fIerrno\fP to \fBEILSEQ\fP.
In this case,
2004-11-03 13:51:07 +00:00
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
.BR mbrlen ()
function returns the number of bytes
parsed from the multibyte
2004-11-03 13:51:07 +00:00
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)
2006-02-09 20:29:51 +00:00
and sets \fIerrno\fP to \fBEILSEQ\fP, if an invalid multibyte sequence was
encountered.
It returns (size_t)(\-2) if it couldn't parse a complete multibyte
2004-11-03 13:51:07 +00:00
character, meaning that \fIn\fP should be increased.
.SH "CONFORMING TO"
2006-08-03 13:57:30 +00:00
C99
2004-11-03 13:51:07 +00:00
.SH NOTES
The behaviour of
.BR mbrlen ()
depends on the LC_CTYPE category of the
2004-11-03 13:51:07 +00:00
current locale.
2007-05-16 18:25:50 +00:00
.SH "SEE ALSO"
.BR mbrtowc (3)