gitlog-to-changelog: give better diagnostic for failed pipe-open
[gnulib.git] / m4 / fpending.m4
index a6e4338..65d2ddd 100644 (file)
@@ -1,4 +1,10 @@
-#serial 1
+#serial 13
+
+# Copyright (C) 2000, 2001, 2004, 2005, 2006, 2007, 2008 Free Software
+# Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 dnl From Jim Meyering
 dnl Using code from emacs, based on suggestions from Paul Eggert
 
 dnl From Jim Meyering
 dnl Using code from emacs, based on suggestions from Paul Eggert
@@ -8,11 +14,12 @@ dnl Find out how to determine the number of pending output bytes on a stream.
 dnl glibc (2.1.93 and newer) and Solaris provide __fpending.  On other systems,
 dnl we have to grub around in the FILE struct.
 
 dnl glibc (2.1.93 and newer) and Solaris provide __fpending.  On other systems,
 dnl we have to grub around in the FILE struct.
 
-AC_DEFUN(jm_FUNC_FPENDING,
+AC_DEFUN([gl_FUNC_FPENDING],
 [
 [
-  AC_CHECK_HEADERS(stdio_ext.h)
-  AC_REPLACE_FUNCS([__fpending])
+  AC_CHECK_HEADERS_ONCE(stdio_ext.h)
+  AC_CHECK_FUNCS_ONCE([__fpending])
   fp_headers='
   fp_headers='
+#     include <stdio.h>
 #     if HAVE_STDIO_EXT_H
 #      include <stdio_ext.h>
 #     endif
 #     if HAVE_STDIO_EXT_H
 #      include <stdio_ext.h>
 #     endif
@@ -23,45 +30,48 @@ AC_DEFUN(jm_FUNC_FPENDING,
              [how to determine the number of pending output bytes on a stream],
                   ac_cv_sys_pending_output_n_bytes,
       [
              [how to determine the number of pending output bytes on a stream],
                   ac_cv_sys_pending_output_n_bytes,
       [
-        fp_save_DEFS=$DEFS
-       for ac_expr in                                          \
-                                                               \
-           '# glibc2'                                          \
-           'fp->_IO_write_ptr - fp->_IO_write_base'            \
-                                                               \
-           '# traditional Unix'                                \
-           'fp->_ptr - fp->_base'                              \
-                                                               \
-           '# BSD'                                             \
-           'fp->_p - fp->_bf._base'                            \
-                                                               \
-           '# SCO, Unixware'                                   \
-           'fp->__ptr - fp->__base'                            \
-                                                               \
-           '# old glibc?'                                      \
-           'fp->__bufp - fp->__buffer'                         \
-                                                               \
-           '# old glibc iostream?'                             \
-           'fp->_pptr - fp->_pbase'                            \
-                                                               \
-           '# VMS'                                             \
-           '(*fp)->_ptr - (*fp)->_base'                        \
-                                                               \
-           '# e.g., DGUX R4.11; the info is not available'     \
-           1                                                   \
+       for ac_expr in                                                    \
+                                                                         \
+           '# glibc2'                                                    \
+           'fp->_IO_write_ptr - fp->_IO_write_base'                      \
+                                                                         \
+           '# traditional Unix'                                          \
+           'fp->_ptr - fp->_base'                                        \
+                                                                         \
+           '# BSD'                                                       \
+           'fp->_p - fp->_bf._base'                                      \
+                                                                         \
+           '# SCO, Unixware'                                             \
+           '(fp->__ptr ? fp->__ptr - fp->__base : 0)'                    \
+                                                                         \
+           '# QNX'                                                       \
+           '(fp->_Mode & 0x2000 /*_MWRITE*/ ? fp->_Next - fp->_Buf : 0)' \
+                                                                         \
+           '# old glibc?'                                                \
+           'fp->__bufp - fp->__buffer'                                   \
+                                                                         \
+           '# old glibc iostream?'                                       \
+           'fp->_pptr - fp->_pbase'                                      \
+                                                                         \
+           '# emx+gcc'                                                   \
+           'fp->_ptr - fp->_buffer'                                      \
+                                                                         \
+           '# VMS'                                                       \
+           '(*fp)->_ptr - (*fp)->_base'                                  \
+                                                                         \
+           '# e.g., DGUX R4.11; the info is not available'               \
+           1                                                             \
            ; do
 
          # Skip each embedded comment.
          case "$ac_expr" in '#'*) continue;; esac
 
            ; do
 
          # Skip each embedded comment.
          case "$ac_expr" in '#'*) continue;; esac
 
-         DEFS="$DEFS -DPENDING_OUTPUT_N_BYTES=$ac_expr"
          AC_TRY_COMPILE(
            [#include <stdio.h>
            ],
            [FILE *fp = stdin; (void) ($ac_expr);],
            fp_done=yes
          )
          AC_TRY_COMPILE(
            [#include <stdio.h>
            ],
            [FILE *fp = stdin; (void) ($ac_expr);],
            fp_done=yes
          )
-         DEFS=$fp_save_DEFS
          test "$fp_done" = yes && break
        done
 
          test "$fp_done" = yes && break
        done
 
@@ -71,5 +81,6 @@ AC_DEFUN(jm_FUNC_FPENDING,
     AC_DEFINE_UNQUOTED(PENDING_OUTPUT_N_BYTES,
       $ac_cv_sys_pending_output_n_bytes,
       [the number of pending output bytes on stream `fp'])
     AC_DEFINE_UNQUOTED(PENDING_OUTPUT_N_BYTES,
       $ac_cv_sys_pending_output_n_bytes,
       [the number of pending output bytes on stream `fp'])
+    AC_LIBOBJ([fpending])
   fi
 ])
   fi
 ])