3 # Copyright (C) 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
4 # This file is free software; the Free Software Foundation
5 # gives unlimited permission to copy and/or distribute it,
6 # with or without modifications, as long as this notice is preserved.
9 dnl Using code from emacs, based on suggestions from Paul Eggert
10 dnl and Ulrich Drepper.
12 dnl Find out how to determine the number of pending output bytes on a stream.
13 dnl glibc (2.1.93 and newer) and Solaris provide __fpending. On other systems,
14 dnl we have to grub around in the FILE struct.
16 AC_DEFUN([gl_FUNC_FPENDING],
18 AC_LIBSOURCES([__fpending.c, __fpending.h])
20 AC_CHECK_HEADERS(stdio_ext.h)
21 AC_REPLACE_FUNCS([__fpending])
24 # include <stdio_ext.h>
27 AC_CHECK_DECLS([__fpending], , , $fp_headers)
28 if test $ac_cv_func___fpending = no; then
30 [how to determine the number of pending output bytes on a stream],
31 ac_cv_sys_pending_output_n_bytes,
36 'fp->_IO_write_ptr - fp->_IO_write_base' \
38 '# traditional Unix' \
39 'fp->_ptr - fp->_base' \
42 'fp->_p - fp->_bf._base' \
45 'fp->__ptr - fp->__base' \
48 'fp->__bufp - fp->__buffer' \
50 '# old glibc iostream?' \
51 'fp->_pptr - fp->_pbase' \
54 '(*fp)->_ptr - (*fp)->_base' \
56 '# e.g., DGUX R4.11; the info is not available' \
60 # Skip each embedded comment.
61 case "$ac_expr" in '#'*) continue;; esac
66 [FILE *fp = stdin; (void) ($ac_expr);],
69 test "$fp_done" = yes && break
72 ac_cv_sys_pending_output_n_bytes=$ac_expr
75 AC_DEFINE_UNQUOTED(PENDING_OUTPUT_N_BYTES,
76 $ac_cv_sys_pending_output_n_bytes,
77 [the number of pending output bytes on stream `fp'])