| 1 | # serial 19
|
|---|
| 2 |
|
|---|
| 3 | # Copyright (C) 2000-2001, 2004-2012 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.
|
|---|
| 7 |
|
|---|
| 8 | dnl From Jim Meyering
|
|---|
| 9 | dnl Using code from emacs, based on suggestions from Paul Eggert
|
|---|
| 10 | dnl and Ulrich Drepper.
|
|---|
| 11 |
|
|---|
| 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.
|
|---|
| 15 |
|
|---|
| 16 | AC_DEFUN([gl_FUNC_FPENDING],
|
|---|
| 17 | [
|
|---|
| 18 | AC_CHECK_HEADERS_ONCE([stdio_ext.h])
|
|---|
| 19 | AC_CHECK_FUNCS_ONCE([__fpending])
|
|---|
| 20 | fp_headers='
|
|---|
| 21 | # include <stdio.h>
|
|---|
| 22 | # if HAVE_STDIO_EXT_H
|
|---|
| 23 | # include <stdio_ext.h>
|
|---|
| 24 | # endif
|
|---|
| 25 | '
|
|---|
| 26 | AC_CHECK_DECLS([__fpending], , , $fp_headers)
|
|---|
| 27 | ])
|
|---|
| 28 |
|
|---|
| 29 | AC_DEFUN([gl_PREREQ_FPENDING],
|
|---|
| 30 | [
|
|---|
| 31 | AC_CACHE_CHECK(
|
|---|
| 32 | [how to determine the number of pending output bytes on a stream],
|
|---|
| 33 | ac_cv_sys_pending_output_n_bytes,
|
|---|
| 34 | [
|
|---|
| 35 | for ac_expr in \
|
|---|
| 36 | \
|
|---|
| 37 | '# glibc2' \
|
|---|
| 38 | 'fp->_IO_write_ptr - fp->_IO_write_base' \
|
|---|
| 39 | \
|
|---|
| 40 | '# traditional Unix' \
|
|---|
| 41 | 'fp->_ptr - fp->_base' \
|
|---|
| 42 | \
|
|---|
| 43 | '# BSD' \
|
|---|
| 44 | 'fp->_p - fp->_bf._base' \
|
|---|
| 45 | \
|
|---|
| 46 | '# SCO, Unixware' \
|
|---|
| 47 | '(fp->__ptr ? fp->__ptr - fp->__base : 0)' \
|
|---|
| 48 | \
|
|---|
| 49 | '# QNX' \
|
|---|
| 50 | '(fp->_Mode & 0x2000 /*_MWRITE*/ ? fp->_Next - fp->_Buf : 0)' \
|
|---|
| 51 | \
|
|---|
| 52 | '# old glibc?' \
|
|---|
| 53 | 'fp->__bufp - fp->__buffer' \
|
|---|
| 54 | \
|
|---|
| 55 | '# old glibc iostream?' \
|
|---|
| 56 | 'fp->_pptr - fp->_pbase' \
|
|---|
| 57 | \
|
|---|
| 58 | '# emx+gcc' \
|
|---|
| 59 | 'fp->_ptr - fp->_buffer' \
|
|---|
| 60 | \
|
|---|
| 61 | '# Minix' \
|
|---|
| 62 | 'fp->_ptr - fp->_buf' \
|
|---|
| 63 | \
|
|---|
| 64 | '# Plan9' \
|
|---|
| 65 | 'fp->wp - fp->buf' \
|
|---|
| 66 | \
|
|---|
| 67 | '# VMS' \
|
|---|
| 68 | '(*fp)->_ptr - (*fp)->_base' \
|
|---|
| 69 | \
|
|---|
| 70 | '# e.g., DGUX R4.11; the info is not available' \
|
|---|
| 71 | 1 \
|
|---|
| 72 | ; do
|
|---|
| 73 |
|
|---|
| 74 | # Skip each embedded comment.
|
|---|
| 75 | case "$ac_expr" in '#'*) continue;; esac
|
|---|
| 76 |
|
|---|
| 77 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
|
|---|
| 78 | [[FILE *fp = stdin; (void) ($ac_expr);]])],
|
|---|
| 79 | [fp_done=yes]
|
|---|
| 80 | )
|
|---|
| 81 | test "$fp_done" = yes && break
|
|---|
| 82 | done
|
|---|
| 83 |
|
|---|
| 84 | ac_cv_sys_pending_output_n_bytes=$ac_expr
|
|---|
| 85 | ]
|
|---|
| 86 | )
|
|---|
| 87 | AC_DEFINE_UNQUOTED([PENDING_OUTPUT_N_BYTES],
|
|---|
| 88 | $ac_cv_sys_pending_output_n_bytes,
|
|---|
| 89 | [the number of pending output bytes on stream 'fp'])
|
|---|
| 90 | ])
|
|---|