From bfbf5dbc5ec0aa90ee2ac3c48f3708de1f428178 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 6 Apr 2010 00:30:28 +0200 Subject: [PATCH] btowc: Work around Cygwin 1.7.2 bug. --- ChangeLog | 7 +++++++ doc/posix-functions/btowc.texi | 3 +++ m4/btowc.m4 | 38 ++++++++++++++++++++++++++++++++-- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3e0e539ec8..8dca731a0a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-04-05 Bruno Haible + + 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. + 2010-04-05 Bruno Haible Make the multithread modules work on Cygwin 1.7.2. diff --git a/doc/posix-functions/btowc.texi b/doc/posix-functions/btowc.texi index b58fa848e8..913f84ad53 100644 --- a/doc/posix-functions/btowc.texi +++ b/doc/posix-functions/btowc.texi @@ -12,6 +12,9 @@ Portability problems fixed by Gnulib: 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 diff --git a/m4/btowc.m4 b/m4/btowc.m4 index 2c75c8fb02..c4ee4e4197 100644 --- a/m4/btowc.m4 +++ b/m4/btowc.m4 @@ -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 @@ AC_DEFUN([gl_FUNC_BTOWC], 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 +#include +#include +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 @@ int main () [:]) fi ]) + + case "$gl_cv_func_btowc_nul" in + *yes) ;; + *) REPLACE_BTOWC=1 ;; + esac case "$gl_cv_func_btowc_eof" in *yes) ;; *) REPLACE_BTOWC=1 ;; -- 2.30.2