Standard C Library Functions mbrlen(3C)
NAME
mbrlen - get number of bytes in a character (restartable)
SYNOPSIS
#include
sizet mbrlen(const char *restrict s, sizet n, mbstatet *restrict ps);
DESCRIPTION
If s is not a null pointer, mbrlen() determines the number
of bytes constituting the character pointed to by s. It is
equivalent to:
mbstatet internal;
mbrtowc(NUL, s, n, ps != NUL ? ps : &internal);
If ps is a null pointer, the mbrlen() function uses its own
internal mbstatet object, which is initialized at program
startup to the initial conversion state. Otherwise, the
mbstatet object pointed to by ps is used to completely
describe the current conversion state of the associated
character sequence. Solaris will behave as if no function
defined in the Solaris Reference Manual calls mbrlen().
The behavior of this function is affected by the LCTYPE
category of the current locale. See environ(5).
RETURN VALUES
The mbrlen() function returns the first of the following
that applies:
0 If the next n or fewer bytes complete the
character that corresponds to the null
wide-character.
positive If the next n or fewer bytes complete a
valid character; the value returned is the
number of bytes that complete the charac-
ter.
(sizet)-2 If the next n bytes contribute to an incom-
plete but potentially valid character, and
all n bytes have been processed. When n has
at least the value of the MBCURMAX macro,
this case can only occur if s points at a
sequence of redundant shift sequences (for
SunOS 5.11 Last change: 1 Nov 2003 1
Standard C Library Functions mbrlen(3C)
implementations with state-dependent encod-
ings).
(sizet)-1 If an encoding error occurs, in which case
the next n or fewer bytes do not contribute
to a complete and valid character. In
this case, EILSEQ is stored in errno and
the conversion state is undefined.
ERORS
The mbrlen() function may fail if:
EINVAL The ps argument points to an object that contains
an invalid conversion state.
EILSEQ Invalid character sequence is detected.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard
MT-Level See NOTES below
SEE ALSO
mbrtowc(3C), mbsinit(3C), setlocale(3C), attributes(5),
environ(5), standards(5)
NOTES
If ps is not a null pointer, mbrlen() uses the mbstatet
object pointed to by ps and the function can be used safely
in multithreaded applications, as long as setlocale(3C) is
not being called to change the locale. If ps is a null
pointer, mbrlen() uses its internal mbstatet object and the
function is Unsafe in multithreaded applications.
SunOS 5.11 Last change: 1 Nov 2003 2
|