3 <<_mblen_r>>---reentrant minimal multibyte length function
10 int _mblen_r(struct _reent *<[r]>, const char *<[s]>, size_t <[n]>, int *<[state]>);
13 When _MB_CAPABLE is not defined, this is a minimal ANSI-conforming
14 implementation of <<_mblen_r>>. In this case, the
15 only ``multi-byte character sequences'' recognized are single bytes,
16 and thus <<1>> is returned unless <[s]> is the null pointer or
17 has a length of 0 or is the empty string.
19 When _MB_CAPABLE is defined, this routine calls <<_mbtowc_r>> to perform
20 the conversion, passing a state variable to allow state dependent
21 decoding. The result is based on the locale setting which may
22 be restricted to a defined set of locales.
25 This implementation of <<_mblen_r>> returns <<0>> if
26 <[s]> is <<NULL>> or the empty string; it returns <<1>> if not _MB_CAPABLE or
27 the character is a single-byte character; it returns <<-1>>
28 if the multi-byte character is invalid; otherwise it returns
29 the number of bytes in the multibyte character.
32 <<_mblen>> is required in the ANSI C standard. However, the precise
33 effects vary with the locale.
35 <<_mblen_r>> requires no supporting OS subroutines.
44 _mblen_r (struct _reent
*r
,
51 retval
= __MBTOWC (r
, NULL
, s
, n
, state
);
60 #else /* not _MB_CAPABLE */
61 if (s
== NULL
|| *s
== '\0')
66 #endif /* not _MB_CAPABLE */