diff options
author | Claudio Fontana <sick_soul@users.sourceforge.net> | 2005-11-01 09:27:17 +0000 |
---|---|---|
committer | Claudio Fontana <sick_soul@users.sourceforge.net> | 2005-11-01 09:27:17 +0000 |
commit | c12afffc3d06c2acfc5fab3aa4746d1096f4950a (patch) | |
tree | 7af089dbe424fa5639f8aeba7250e8000f613278 /m4/fpending.m4 | |
parent | 87b1fbbc4ad8a95bfe27a91bc6672d7fcb9e0fe8 (diff) | |
download | idutils-c12afffc3d06c2acfc5fab3aa4746d1096f4950a.tar.gz idutils-c12afffc3d06c2acfc5fab3aa4746d1096f4950a.tar.bz2 idutils-c12afffc3d06c2acfc5fab3aa4746d1096f4950a.zip |
* new gnulib m4 macros
Diffstat (limited to 'm4/fpending.m4')
-rw-r--r-- | m4/fpending.m4 | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/m4/fpending.m4 b/m4/fpending.m4 new file mode 100644 index 0000000..87398b1 --- /dev/null +++ b/m4/fpending.m4 @@ -0,0 +1,79 @@ +#serial 6 + +# Copyright (C) 2000, 2001, 2004, 2005 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 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([gl_FUNC_FPENDING], +[ + AC_LIBSOURCES([__fpending.c, __fpending.h]) + + AC_CHECK_HEADERS(stdio_ext.h) + AC_REPLACE_FUNCS([__fpending]) + fp_headers=' +# if HAVE_STDIO_EXT_H +# include <stdio_ext.h> +# endif +' + AC_CHECK_DECLS([__fpending], , , $fp_headers) + if test $ac_cv_func___fpending = no; then + AC_CACHE_CHECK( + [how to determine the number of pending output bytes on a stream], + ac_cv_sys_pending_output_n_bytes, + [ + 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 \ + ; do + + # Skip each embedded comment. + case "$ac_expr" in '#'*) continue;; esac + + AC_TRY_COMPILE( + [#include <stdio.h> + ], + [FILE *fp = stdin; (void) ($ac_expr);], + fp_done=yes + ) + test "$fp_done" = yes && break + done + + ac_cv_sys_pending_output_n_bytes=$ac_expr + ] + ) + AC_DEFINE_UNQUOTED(PENDING_OUTPUT_N_BYTES, + $ac_cv_sys_pending_output_n_bytes, + [the number of pending output bytes on stream `fp']) + fi +]) |