fpending: fix regression on DragonFly BSD
authorEric Blake <eblake@redhat.com>
Fri, 8 Nov 2013 13:33:43 +0000 (06:33 -0700)
committerEric Blake <eblake@redhat.com>
Fri, 8 Nov 2013 13:48:55 +0000 (06:48 -0700)
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 <eblake@redhat.com>
ChangeLog
lib/fpending.h
m4/fpending.m4

index 3d0f0fe..976c624 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-11-08  Eric Blake  <eblake@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  <meyering@fb.com>
 
        hash: relax license to LGPLv2+, for libguestfs
index 30d67fc..c12871d 100644 (file)
@@ -24,6 +24,6 @@
 # include <stdio_ext.h>
 #endif
 
-#ifndef __fpending
+#if !HAVE_DECL_FPENDING
 size_t __fpending (FILE *) _GL_ATTRIBUTE_PURE;
 #endif
index c8d9e8b..669105b 100644 (file)
@@ -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],