3 # Copyright (C) 2007-2011 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.
10 dnl Find out how to obey POSIX semantics of fflush(stdin) discarding
11 dnl unread input on seekable streams, rather than C99 undefined semantics.
13 AC_DEFUN([gl_FUNC_FFLUSH],
16 if test $gl_cv_func_fflush_stdin = no; then
21 dnl Determine whether fflush works on input streams.
22 dnl Sets gl_cv_func_fflush_stdin.
24 AC_DEFUN([gl_FUNC_FFLUSH_STDIN],
26 AC_CACHE_CHECK([whether fflush works on input streams],
27 [gl_cv_func_fflush_stdin],
28 [echo hello world > conftest.txt
29 AC_RUN_IFELSE([AC_LANG_PROGRAM(
33 ]], [[FILE *f = fopen ("conftest.txt", "r");
40 if (fd < 0 || fread (buffer, 1, 5, f) != 5)
42 /* For deterministic results, ensure f read a bigger buffer. */
43 if (lseek (fd, 0, SEEK_CUR) == 5)
45 /* POSIX requires fflush-fseek to set file offset of fd. This fails
46 on BSD systems and on mingw. */
47 if (fflush (f) != 0 || fseek (f, 0, SEEK_CUR) != 0)
49 if (lseek (fd, 0, SEEK_CUR) != 5)
51 /* Verify behaviour of fflush after ungetc. See
52 <http://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */
53 /* Verify behaviour of fflush after a backup ungetc. This fails on
60 /* Verify behaviour of fflush after a non-backup ungetc. This fails
61 on glibc 2.8 and on BSD systems. */
68 ]])], [gl_cv_func_fflush_stdin=yes], [gl_cv_func_fflush_stdin=no],
69 [dnl Pessimistically assume fflush is broken.
70 gl_cv_func_fflush_stdin=no])
75 AC_DEFUN([gl_REPLACE_FFLUSH],
78 AC_REQUIRE([gl_STDIO_H_DEFAULTS])
83 # Prerequisites of lib/fflush.c.
84 AC_DEFUN([gl_PREREQ_FFLUSH],
86 AC_REQUIRE([AC_C_INLINE])