> Failures on Cygwin 1.7.2 > ------------------------ > > test-btowc.c:48: assertion failed > ./test-btowc1.sh: line 15: 2892 Aborted (core dumped) > LC_ALL=$LOCALE_FR ./test-btowc${EXEEXT} 1 > FAIL: test-btowc1.sh > > test-btowc.c:56: assertion failed > ./test-btowc2.sh: line 15: 3896 Aborted (core dumped) > LC_ALL=$LOCALE_FR_UTF8 ./test-btowc${EXEEXT} 2 > FAIL: test-btowc2.sh
These failures are due to btwoc('\0') returning WEOF instead of 0, even in the "C" locale. This is a bug, because the NUL character is a valid ASCII character (even a very important one). I'm adding a workaround: 2010-04-05 Bruno Haible <br...@clisp.org> btowc: Work around Cygwin 1.7.2 bug. * m4/btowc.m4 (gl_FUNC_BTOWC): Set REPLACE_BTOWC to 1 if the function does not map NUL to 0. * doc/posix-functions/btowc.texi: Mention the Cygwin bug. --- doc/posix-functions/btowc.texi.orig Tue Apr 6 00:28:05 2010 +++ doc/posix-functions/btowc.texi Tue Apr 6 00:07:25 2010 @@ -12,6 +12,9 @@ This function is missing on some platforms: HP-UX 11.00, IRIX 5.3, Solaris 2.6, mingw, Interix 3.5. @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. @end itemize --- m4/btowc.m4.orig Tue Apr 6 00:28:05 2010 +++ m4/btowc.m4 Tue Apr 6 00:22:27 2010 @@ -1,4 +1,4 @@ -# btowc.m4 serial 5 +# btowc.m4 serial 6 dnl Copyright (C) 2008-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -18,10 +18,39 @@ HAVE_BTOWC=0 else - dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF. AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gt_LOCALE_FR]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + dnl Cygwin 1.7.2 btowc('\0') is WEOF, not 0. + AC_CACHE_CHECK([whether btowc(0) is correct], + [gl_cv_func_btowc_nul], + [ + AC_TRY_RUN([ +#include <stdio.h> +#include <string.h> +#include <wchar.h> +int main () +{ + if (btowc ('\0') != 0) + return 1; + return 0; +}], + [gl_cv_func_btowc_nul=yes], + [gl_cv_func_btowc_nul=no], + [ +changequote(,)dnl + case "$host_os" in + # Guess no on Cygwin. + cygwin*) gl_cv_func_btowc_nul="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_btowc_nul="guessing yes" ;; + esac +changequote([,])dnl + ]) + ]) + + dnl IRIX 6.5 btowc(EOF) is 0xFF, not WEOF. AC_CACHE_CHECK([whether btowc(EOF) is correct], [gl_cv_func_btowc_eof], [ @@ -55,6 +84,11 @@ [:]) fi ]) + + case "$gl_cv_func_btowc_nul" in + *yes) ;; + *) REPLACE_BTOWC=1 ;; + esac case "$gl_cv_func_btowc_eof" in *yes) ;; *) REPLACE_BTOWC=1 ;;