*** UNIX MANUAL PAGE BROWSER ***

A Nergahak database for man pages research.

Navigation

Directory Browser

1Browse 4.4BSD4.4BSD
1Browse Digital UNIXDigital UNIX 4.0e
1Browse FreeBSDFreeBSD 14.3
1Browse MINIXMINIX 3.4.0rc6-d5e4fc0
1Browse NetBSDNetBSD 10.1
1Browse OpenBSDOpenBSD 7.7
1Browse UNIX v7Version 7 UNIX
1Browse UNIX v10Version 10 UNIX

Manual Page Search

Manual Page Result

0 Command: mbrtoc32 | Section: 3 | Source: NetBSD | File: mbrtoc32.3
MBRTOC32(3) FreeBSD Library Functions Manual MBRTOC32(3) NAME mbrtoc32 - Restartable multibyte to UTF-32 conversion LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <uchar.h> size_t mbrtoc32(char32_t * restrict pc32, const char * restrict s, size_t n, mbstate_t * restrict ps); DESCRIPTION The mbrtoc32 function decodes multibyte characters in the current locale and converts them to Unicode scalar values (i.e., to UTF-32), keeping state so it can restart after incremental progress. Each call to mbrtoc32: 1. examines up to n bytes starting at s, 2. yields a Unicode scalar value (i.e., a UTF-32 code unit) if available by storing it at *pc32, 3. saves state at ps, and 4. returns either the number of bytes consumed if any or a special return value. Specifically: o If the multibyte sequence at s is invalid after any previous input saved at ps, or if an error occurs in decoding, mbrtoc32 returns (size_t)-1 and sets errno(2) to indicate the error. o If the multibyte sequence at s is still incomplete after n bytes, including any previous input saved in ps, mbrtoc32 saves its state in ps after all the input so far and returns (size_t)-2. o If mbrtoc32 decodes the null multibyte character, then it stores zero at *pc32 and returns zero. o Otherwise, mbrtoc32 decodes a single multibyte character, stores its Unicode scalar value at *pc32, and returns the number of bytes consumed to decode the first multibyte character. If pc32 is a null pointer, nothing is stored, but the effects on ps and the return value are unchanged. If s is a null pointer, the mbrtoc32 call is equivalent to: mbrtoc32(NULL, "", 1, ps) This always returns zero, and has the effect of resetting ps to the initial conversion state, without writing to pc32, even if it is nonnull. If ps is a null pointer, mbrtoc32 uses an internal mbstate_t object with static storage duration, distinct from all other mbstate_t objects (including those used by mbrtoc8(3), mbrtoc16(3), c8rtomb(3), c16rtomb(3), and c32rtomb(3)), which is initialized at program startup to the initial conversion state. RETURN VALUES The mbrtoc32 function returns: 0 [null] if mbrtoc32 decoded a null multibyte character. i [scalar value] where 0 <= i <= n, if mbrtoc32 consumed i bytes of input to decode the next multibyte character, yielding a Unicode scalar value. (size_t)-2 [incomplete] if mbrtoc32 found only an incomplete multibyte sequence after all n bytes of input and any previous input, and saved its state to restart in the next call with ps. (size_t)-1 [error] if any encoding error was detected; errno(2) is set to reflect the error. EXAMPLES char *s = ...; size_t n = ...; mbstate_t mbs = {0}; /* initial conversion state */ while (n) { char32_t c32; size_t len; len = mbrtoc32(&c32, s, n, &mbs); switch (len) { case 0: /* NUL terminator */ assert(c32 == 0); goto out; default: /* scalar value */ printf("U+%04"PRIx32"\n", (uint32_t)c32); break; case (size_t)-2: /* incomplete */ printf("incomplete\n"); goto readmore; case (size_t)-1: /* error */ printf("error: %d\n", errno); goto out; } s += len; n -= len; } ERRORS [EILSEQ] The multibyte sequence cannot be decoded in the current locale as a Unicode scalar value. [EIO] An error occurred in loading the locale's character conversions. SEE ALSO c16rtomb(3), c32rtomb(3), c8rtomb(3), mbrtoc16(3), mbrtoc8(3), uchar(3) The Unicode Standard, https://www.unicode.org/versions/Unicode15.0.0/UnicodeStandard-15.0.pdf, The Unicode Consortium, September 2022, Version 15.0 -- Core Specification. STANDARDS The mbrtoc32 function conforms to ISO/IEC 9899:2011 ("ISO C11"). HISTORY The mbrtoc32 function first appeared in NetBSD 11.0. FreeBSD 14.1-RELEASE-p8 August 14, 2024 FreeBSD 14.1-RELEASE-p8

Navigation Options