mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-16 01:22:18 +03:00
Fix mbrtowc so that it never returns -1 in the C locale, as this conflicts with a future version of POSIX http://austingroupbugs.net/view.php?id=663#c2738 and causes problems with GNU grep: http://bugs.gnu.org/23234 See glibc bug 19932: https://sourceware.org/bugzilla/show_bug.cgi?id=19932 * doc/posix-functions/mbrlen.texi (mbrlen): * doc/posix-functions/mbrtowc.texi (mbrtowc): Document the glibc bug. * lib/mbrtowc.c [C_LOCALE_MAYBE_EILSEQ]: Include hard-locale.h, locale.h. (rpl_mbrtowc): Work around the C_LOCALE_MAYBE_EILSEQ bug, if the bug is possible. * m4/mbrtowc.m4 (gl_MBRTOWC_C_LOCALE): New macro. (gl_FUNC_MBRTOWC): Use it, and define C_LOCALE_MAYBE_EILSEQ as needed. * modules/hard-locale (License): Now LGPLv2+, for mbrtowc. * modules/mbrtowc (Depends-on): Add hard-locale. * modules/mbrtowc-tests (Files, TESTS): Add tests/test-mbrtowc5.sh. * tests/test-mbrtowc.c (main): Test for bug fix if arg is '5'. * tests/test-mbrtowc5.sh: New file.
43 lines
1.2 KiB
Plaintext
43 lines
1.2 KiB
Plaintext
@node mbrlen
|
|
@section @code{mbrlen}
|
|
@findex mbrlen
|
|
|
|
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/mbrlen.html}
|
|
|
|
Gnulib module: mbrlen
|
|
|
|
Portability problems fixed by Gnulib:
|
|
@itemize
|
|
@item
|
|
This function is missing on some platforms:
|
|
Minix 3.1.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, mingw, Interix 3.5.
|
|
@item
|
|
In the C or POSIX locales, this function can return @code{(size_t) -1}
|
|
and set @code{errno} to @code{EILSEQ}:
|
|
glibc 2.23.
|
|
@item
|
|
This function returns 0 instead of @code{(size_t) -2} when the input
|
|
is empty:
|
|
glibc 2.19.
|
|
@item
|
|
This function returns @code{(size_t) -1} instead of @code{(size_t) -2}
|
|
when the input is empty:
|
|
AIX 5.1.
|
|
@item
|
|
This function does not put the state into non-initial state when parsing an
|
|
incomplete multibyte character on some platforms:
|
|
AIX 5.1, OSF/1 5.1.
|
|
@item
|
|
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.
|
|
@item
|
|
This function may not return 0 when parsing the NUL character on some platforms:
|
|
Solaris 9.
|
|
@end itemize
|
|
|
|
Portability problems not fixed by Gnulib:
|
|
@itemize
|
|
@end itemize
|