mbrtowc
=======

POSIX specification:
 https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrtowc.html

Gnulib module: mbrtowc

Portability problems fixed by Gnulib:

  * This function is missing on some platforms: Minix 3.1.8, HP-UX 11.00, IRIX 6.5, mingw.

  * In the C or POSIX locales, this function can return (size_t) -1 and set errno to EILSEQ: glibc 2.35.

  * This function returns 0 instead of (size_t) -2 when the input is empty: glibc 2.19, MSVC 14, Android 11.

  * This function returns (size_t) -1 instead of (size_t) -2 when the input is empty: AIX 7.2.

  * This function does not put the state into non-initial state when parsing an incomplete multibyte character on some platforms: AIX 7.2.

  * This function stores a wide character when parsing an incomplete multibyte character on some platforms: MSVC 14.

  * This function returns the total number of bytes that make up the multibyte character, not the number of bytes that were needed to complete the multibyte character, on some platforms: HP-UX 11.11, Solaris 11 2010-11, mingw, MSVC 14.

  * This function may not return 0 when parsing the NUL character on some platforms: Solaris 9.

Portability problems not fixed by Gnulib:

  * In UTF-8 locales, this function may return wide characters up to 0x7FFFFFFF (that is, beyond 0x0010FFFF) on some platforms: glibc 2.34.

  * On Windows and 32-bit AIX platforms, wchar_t is a 16-bit type and therefore cannot accommodate all Unicode characters. However, the ISO C11 function mbrtoc32, provided by Gnulib module mbrtoc32, operates on 32-bit wide characters and therefore does not have this limitation.