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