X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Ffpending.m4;h=a073483b6bae62c648885d5d1cc71c00feda2e4e;hb=876405426e971f914da0645ea9f3810ad62ef667;hp=a240f0ab2ff5f1b5df387cac88149af00ec2e40e;hpb=5f7220a7b2a2065d80bcc8bb248445700d9f6453;p=gnulib.git diff --git a/m4/fpending.m4 b/m4/fpending.m4 index a240f0ab2..a073483b6 100644 --- a/m4/fpending.m4 +++ b/m4/fpending.m4 @@ -1,18 +1,24 @@ -#serial 1 +#serial 10 + +# Copyright (C) 2000, 2001, 2004, 2005, 2006 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 and Ulrich Drepper. dnl Find out how to determine the number of pending output bytes on a stream. -dnl Solaris provides __fpending. On other systems, we have to grub around -dnl 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_CHECK_HEADERS_ONCE(stdio_ext.h) AC_REPLACE_FUNCS([__fpending]) fp_headers=' +# include # if HAVE_STDIO_EXT_H # include # endif @@ -23,7 +29,6 @@ AC_DEFUN(jm_FUNC_FPENDING, [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' \ @@ -36,7 +41,7 @@ AC_DEFUN(jm_FUNC_FPENDING, 'fp->_p - fp->_bf._base' \ \ '# SCO, Unixware' \ - 'fp->__ptr - fp->__base' \ + '(fp->__ptr ? fp->__ptr - fp->__base : 0)' \ \ '# old glibc?' \ 'fp->__bufp - fp->__buffer' \ @@ -54,14 +59,12 @@ AC_DEFUN(jm_FUNC_FPENDING, # Skip each embedded comment. case "$ac_expr" in '#'*) continue;; esac - DEFS="$DEFS -DPENDING_OUTPUT_N_BYTES=$ac_expr" AC_TRY_COMPILE( [#include ], [FILE *fp = stdin; (void) ($ac_expr);], fp_done=yes ) - DEFS=$fp_save_DEFS test "$fp_done" = yes && break done