Hash :
11fe27f7
Author :
Date :
2023-03-30T13:25:20
btowc: Fix behaviour in the C locale. * lib/btowc.c: Include <string.h> (btowc): Use mbrtowc instead of mbtowc when possible. * m4/btowc.m4 (gl_FUNC_BTOWC): Test for the mingw bug in the C locale. Invoke gl_MBRTOWC_C_LOCALE. If mbrtowc is buggy in the C locale, override also btowc. (gl_PREREQ_BTOWC): Test whether mbrtowc exists. * modules/btowc (Files): Add m4/mbrtowc.m4. (Depends-on): Add mbrtowc. * tests/test-btowc.c (main): Add a test of the C locale, based on tests/test-mbrtowc.c. * tests/test-btowc3.sh: New file, based on tests/test-mbrtowc5.sh. * modules/btowc-tests (Files): Add it. (Makefile.am): Test it. * doc/posix-functions/btowc.texi: Mention the two C locale behaviour bugs and that they are worked around.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
@node btowc
@section @code{btowc}
@findex btowc
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/btowc.html}
Gnulib module: btowc
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
Minix 3.1.8, HP-UX 11.00, mingw.
@item
This function returns WEOF for a NUL argument on some platforms:
Cygwin 1.7.2.
@item
This function does not return WEOF for an EOF argument on some platforms:
IRIX 6.5.
@item
In the C or POSIX locales, this function is not consistent with
Gnulib's @code{mbrtowc} and can return @code{WEOF}:
glibc 2.35, MirOS BSD #10.
@item
In the C or POSIX locales, this function is not consistent with @code{mbrtowc}
on some platforms:
mingw.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
On Windows and 32-bit AIX platforms, @code{wchar_t} is a 16-bit type and
therefore cannot accommodate all Unicode characters.
However, the Gnulib function @code{btoc32}, provided by Gnulib module
@code{btoc32}, operates on 32-bit wide characters and therefore does not have
this limitation.
@end itemize