2 dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
9 AC_REQUIRE([gl_STDIO_H_DEFAULTS])
10 AC_REQUIRE([AC_C_INLINE])
11 AC_REQUIRE([gl_ASM_SYMBOL_PREFIX])
12 gl_CHECK_NEXT_HEADERS([stdio.h])
13 dnl No need to create extra modules for these functions. Everyone who uses
14 dnl <stdio.h> likely needs them.
25 dnl This ifdef is just an optimization, to avoid performing a configure
26 dnl check whose result is not used. It does not make the test of
27 dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant.
28 m4_ifdef([gl_SIGNAL_SIGPIPE], [
30 if test $gl_cv_header_signal_h_SIGPIPE != yes; then
31 REPLACE_STDIO_WRITE_FUNCS=1
32 AC_LIBOBJ([stdio-write])
36 dnl Check for declarations of anything we want to poison if the
37 dnl corresponding gnulib module is not in use, and which is not
38 dnl guaranteed by C89.
39 gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
40 ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
41 snprintf tmpfile vdprintf vsnprintf])
44 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
46 dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
47 AC_REQUIRE([gl_STDIO_H_DEFAULTS])
48 gl_MODULE_INDICATOR_SET_VARIABLE([$1])
49 dnl Define it also as a C macro, for the benefit of the unit tests.
50 gl_MODULE_INDICATOR_FOR_TESTS([$1])
53 AC_DEFUN([gl_STDIO_H_DEFAULTS],
55 GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
56 GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
57 GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
58 GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
59 GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
60 GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
61 GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
62 GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
63 GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
64 GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
65 GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
66 GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
67 GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
68 GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
69 GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
70 GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
71 GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
72 GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
73 GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
74 GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
75 GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
76 GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
77 GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX])
78 GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC])
79 GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR])
80 GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS])
81 GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
82 GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
83 GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
84 GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
85 GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
86 GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
87 GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
88 GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
89 GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
90 GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
91 GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
92 GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF])
93 GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX])
94 GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
95 GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
96 dnl Assume proper GNU behavior unless another module says otherwise.
97 HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE])
98 HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO])
99 HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
100 HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
101 HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
102 HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
103 HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
104 HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
105 HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
106 HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
107 HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
108 HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
109 HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
110 REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
111 REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
112 REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
113 REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
114 REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
115 REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE])
116 REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN])
117 REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK])
118 REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO])
119 REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL])
120 REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO])
121 REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM])
122 REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE])
123 REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF])
124 REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR])
125 REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN])
126 REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF])
127 REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE])
128 REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME])
129 REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT])
130 REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
131 REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
132 REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
133 REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE])
134 REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF])
135 REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF])
136 REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF])
137 REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF])
138 REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
139 REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])
142 dnl Code shared by fseeko and ftello. Determine if large files are supported,
143 dnl but stdin does not start as a large file by default.
144 AC_DEFUN([gl_STDIN_LARGE_OFFSET],
146 AC_CACHE_CHECK([whether stdin defaults to large file offsets],
147 [gl_cv_var_stdin_large_offset],
148 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
149 [[#if defined __SL64 && defined __SCLE /* cygwin */
150 /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
151 fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and
152 it is easier to do a version check than building a runtime test. */
153 # include <cygwin/version.h>
154 # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
158 [gl_cv_var_stdin_large_offset=yes],
159 [gl_cv_var_stdin_large_offset=no])])