Commit 3f5bf99e claimed that it is safe to declare __fpending twice, but in reality this caused a regression on Dragonfly BSD. Reported by GW in <https://lists.gnu.org/archive/html/bug-m4/2013-11/msg00000.html>, <https://lists.gnu.org/archive/html/bug-gnulib/2013-11/msg00022.html>.
* m4/fpending.m4 (gl_FUNC_FPENDING): Check for declaration. * lib/fpending.h (__fpending): Don't declare twice. Signed-off-by: Eric Blake <ebl...@redhat.com> --- I tested that this did not regress the Cygwin fix of commit 3f5bf99e, and am pushing now even though I can't easily test that it fixes the DragonFly issue. ChangeLog | 8 ++++++++ lib/fpending.h | 2 +- m4/fpending.m4 | 18 +++++++++++------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d0f0fe..976c624 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2013-11-08 Eric Blake <ebl...@redhat.com> + + fpending: fix regression on DragonFly BSD + * m4/fpending.m4 (gl_FUNC_FPENDING): Check for declaration. + * lib/fpending.h (__fpending): Don't declare twice. + Reported by GW in + <https://lists.gnu.org/archive/html/bug-m4/2013-11/msg00000.html> + 2013-11-05 Jim Meyering <meyer...@fb.com> hash: relax license to LGPLv2+, for libguestfs diff --git a/lib/fpending.h b/lib/fpending.h index 30d67fc..c12871d 100644 --- a/lib/fpending.h +++ b/lib/fpending.h @@ -24,6 +24,6 @@ # include <stdio_ext.h> #endif -#ifndef __fpending +#if !HAVE_DECL_FPENDING size_t __fpending (FILE *) _GL_ATTRIBUTE_PURE; #endif diff --git a/m4/fpending.m4 b/m4/fpending.m4 index c8d9e8b..669105b 100644 --- a/m4/fpending.m4 +++ b/m4/fpending.m4 @@ -1,4 +1,4 @@ -# serial 20 +# serial 21 # Copyright (C) 2000-2001, 2004-2013 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation @@ -16,19 +16,23 @@ dnl we have to grub around in the FILE struct. AC_DEFUN([gl_FUNC_FPENDING], [ AC_CHECK_HEADERS_ONCE([stdio_ext.h]) + fp_headers=' + #include <stdio.h> + #if HAVE_STDIO_EXT_H + # include <stdio_ext.h> + #endif + ' AC_CACHE_CHECK([for __fpending], [gl_cv_func___fpending], [ AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include <stdio.h> - #if HAVE_STDIO_EXT_H - # include <stdio_ext.h> - #endif - ]], + [AC_LANG_PROGRAM([$fp_headers], [[return ! __fpending (stdin);]])], [gl_cv_func___fpending=yes], [gl_cv_func___fpending=no]) ]) + if test $gl_cv_func___fpending = yes; then + AC_CHECK_DECLS([__fpending], [], [], [$fp_headers]) + fi ]) AC_DEFUN([gl_PREREQ_FPENDING], -- 1.8.3.1