mbrlen — determine number of bytes in next multibyte character
#include <wchar.h>
size_t
mbrlen( |
const char *s, |
size_t n, | |
mbstate_t *ps) ; |
The mbrlen
() function
inspects at most n
bytes of the multibyte string starting at s
and extracts the next
complete multibyte character. It updates the shift state
*ps
. If the multibyte
character is not the null wide character, it returns the
number of bytes that were consumed from s
. If the multibyte character
is the null wide character, it resets the shift state
*ps
to the initial
state and returns 0.
If the n
bytes
starting at s
do not
contain a complete multibyte character, mbrlen
() returns (size_t) −2. This can happen
even if n
>=
MB_CUR_MAX
, if the multibyte
string contains redundant shift sequences.
If the multibyte string starting at s
contains an invalid multibyte
sequence before the next complete character, mbrlen
() returns (size_t) −1 and sets
errno
to EILSEQ. In this case, the effects on
*ps
are
undefined.
If ps
is NULL, a
static anonymous state known only to the mbrlen
() function is used instead.
The mbrlen
() function
returns the number of bytes parsed from the multibyte
sequence starting at s
, 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 errno
to EILSEQ, if an invalid multibyte sequence
was encountered. It returns (size_t) −2 if it couldn't
parse a complete multibyte character, meaning that n
should be increased.
For an explanation of the terms used in this section, see attributes(7).
Interface | Attribute | Value |
mbrlen () |
Thread safety | MT-Unsafe race:mbrlen/!ps |
This page is part of release 4.07 of the Linux man-pages
project. A
description of the project, information about reporting bugs,
and the latest version of this page, can be found at
https://www.kernel.org/doc/man−pages/.
Copyright (c) Bruno Haible <haibleclisp.cons.org> %%%LICENSE_START(GPLv2+_DOC_ONEPARA) 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. %%%LICENSE_END 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 |