From: Bruno Haible Date: Tue, 26 Nov 2024 08:38:42 +0000 (+0100) Subject: fpurge: Improve configure test. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=bdd92671518b807f03b8ffa2f67db2a6395a14fe;p=gnulib.git fpurge: Improve configure test. Reported by Eli Schwartz . * m4/fpurge.m4 (gl_FUNC_FPURGE): If fpurge is not declared, don't test whether it works. Remove now-redundant cross-compilation guess. --- diff --git a/ChangeLog b/ChangeLog index a8bc52a1f8..ff86bb57e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2024-11-26 Bruno Haible + + fpurge: Improve configure test. + Reported by Eli Schwartz . + * m4/fpurge.m4 (gl_FUNC_FPURGE): If fpurge is not declared, don't test + whether it works. Remove now-redundant cross-compilation guess. + 2024-11-24 Bruno Haible gettext-h: Fix compilation error when pgettext is used. diff --git a/m4/fpurge.m4 b/m4/fpurge.m4 index a77f5b965c..2af2fd1108 100644 --- a/m4/fpurge.m4 +++ b/m4/fpurge.m4 @@ -1,5 +1,5 @@ # fpurge.m4 -# serial 14 +# serial 16 dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,58 +8,57 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FPURGE], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CHECK_HEADERS_ONCE([stdio_ext.h]) AC_CHECK_FUNCS_ONCE([fpurge]) gl_CHECK_FUNCS_ANDROID([__fpurge], [[#include ]]) AC_CHECK_DECLS([fpurge], , , [[#include ]]) - if test "x$ac_cv_func_fpurge" = xyes; then + if test $ac_cv_func_fpurge = yes; then HAVE_FPURGE=1 # Detect BSD bug. Only cygwin 1.7 and musl are known to be immune. AC_CACHE_CHECK([whether fpurge works], [gl_cv_func_fpurge_works], - [AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[#include -]], - [[FILE *f = fopen ("conftest.txt", "w+"); - if (!f) - return 1; - if (fputc ('a', f) != 'a') - { fclose (f); return 2; } - rewind (f); - if (fgetc (f) != 'a') - { fclose (f); return 3; } - if (fgetc (f) != EOF) - { fclose (f); return 4; } - if (fpurge (f) != 0) - { fclose (f); return 5; } - if (putc ('b', f) != 'b') - { fclose (f); return 6; } - if (fclose (f) != 0) - return 7; - if ((f = fopen ("conftest.txt", "r")) == NULL) - return 8; - if (fgetc (f) != 'a') - { fclose (f); return 9; } - if (fgetc (f) != 'b') - { fclose (f); return 10; } - if (fgetc (f) != EOF) - { fclose (f); return 11; } - if (fclose (f) != 0) - return 12; - if (remove ("conftest.txt") != 0) - return 13; - return 0; - ]])], - [gl_cv_func_fpurge_works=yes], - [gl_cv_func_fpurge_works=no], - [case "$host_os" in - # Guess yes on musl systems. - *-musl* | midipix*) gl_cv_func_fpurge_works="guessing yes" ;; - # Otherwise obey --enable-cross-guesses. - *) gl_cv_func_fpurge_works="$gl_cross_guess_normal" ;; - esac - ]) + [if test $ac_cv_have_decl_fpurge = yes; then + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + ]], + [[FILE *f = fopen ("conftest.txt", "w+"); + if (!f) + return 1; + if (fputc ('a', f) != 'a') + { fclose (f); return 2; } + rewind (f); + if (fgetc (f) != 'a') + { fclose (f); return 3; } + if (fgetc (f) != EOF) + { fclose (f); return 4; } + if (fpurge (f) != 0) + { fclose (f); return 5; } + if (putc ('b', f) != 'b') + { fclose (f); return 6; } + if (fclose (f) != 0) + return 7; + if ((f = fopen ("conftest.txt", "r")) == NULL) + return 8; + if (fgetc (f) != 'a') + { fclose (f); return 9; } + if (fgetc (f) != 'b') + { fclose (f); return 10; } + if (fgetc (f) != EOF) + { fclose (f); return 11; } + if (fclose (f) != 0) + return 12; + if (remove ("conftest.txt") != 0) + return 13; + return 0; + ]])], + [gl_cv_func_fpurge_works=yes], + [gl_cv_func_fpurge_works=no], + [# Obey --enable-cross-guesses. + gl_cv_func_fpurge_works="$gl_cross_guess_normal" + ]) + else + gl_cv_func_fpurge_works=no + fi ]) case "$gl_cv_func_fpurge_works" in *yes) ;;