2 dnl Copyright (C) 2007-2014 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 dnl For __USE_MINGW_ANSI_STDIO
10 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
12 AC_REQUIRE([gl_STDIO_H_DEFAULTS])
13 gl_NEXT_HEADERS([stdio.h])
15 dnl No need to create extra modules for these functions. Everyone who uses
16 dnl <stdio.h> likely needs them.
18 gl_MODULE_INDICATOR([fscanf])
20 gl_MODULE_INDICATOR([scanf])
26 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
27 dnl "expected source file, required through AC_LIBSOURCES, not found". It is
28 dnl also an optimization, to avoid performing a configure check whose result
29 dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
30 dnl or GNULIB_NONBLOCKING redundant.
31 m4_ifdef([gl_NONBLOCKING_IO], [
33 if test $gl_cv_have_nonblocking != yes; then
34 REPLACE_STDIO_READ_FUNCS=1
35 AC_LIBOBJ([stdio-read])
39 dnl No need to create extra modules for these functions. Everyone who uses
40 dnl <stdio.h> likely needs them.
51 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
52 dnl "expected source file, required through AC_LIBSOURCES, not found". It is
53 dnl also an optimization, to avoid performing a configure check whose result
54 dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
55 dnl GNULIB_SIGPIPE redundant.
56 m4_ifdef([gl_SIGNAL_SIGPIPE], [
58 if test $gl_cv_header_signal_h_SIGPIPE != yes; then
59 REPLACE_STDIO_WRITE_FUNCS=1
60 AC_LIBOBJ([stdio-write])
63 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
64 dnl "expected source file, required through AC_LIBSOURCES, not found". It is
65 dnl also an optimization, to avoid performing a configure check whose result
66 dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
67 dnl or GNULIB_NONBLOCKING redundant.
68 m4_ifdef([gl_NONBLOCKING_IO], [
70 if test $gl_cv_have_nonblocking != yes; then
71 REPLACE_STDIO_WRITE_FUNCS=1
72 AC_LIBOBJ([stdio-write])
76 dnl Check for declarations of anything we want to poison if the
77 dnl corresponding gnulib module is not in use, and which is not
78 dnl guaranteed by both C89 and C11.
79 gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
80 ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
81 renameat snprintf tmpfile vdprintf vsnprintf])
84 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
86 dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
87 AC_REQUIRE([gl_STDIO_H_DEFAULTS])
88 gl_MODULE_INDICATOR_SET_VARIABLE([$1])
89 dnl Define it also as a C macro, for the benefit of the unit tests.
90 gl_MODULE_INDICATOR_FOR_TESTS([$1])
93 AC_DEFUN([gl_STDIO_H_DEFAULTS],
95 GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
96 GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
97 GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN])
98 GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
99 GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC])
100 GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS])
101 GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
102 GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
103 GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
104 GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
105 GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
106 GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
107 GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD])
108 GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
109 GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF])
110 GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
111 GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
112 GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
113 GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
114 GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
115 GNULIB_GETC=0; AC_SUBST([GNULIB_GETC])
116 GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR])
117 GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
118 GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
119 GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
120 GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
121 GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
122 GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
123 GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
124 GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
125 GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX])
126 GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC])
127 GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR])
128 GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS])
129 GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
130 GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
131 GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
132 GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF])
133 GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
134 GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
135 GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
136 GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
137 GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
138 GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
139 GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF])
140 GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF])
141 GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
142 GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
143 GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
144 GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF])
145 GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX])
146 GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
147 GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
148 dnl Assume proper GNU behavior unless another module says otherwise.
149 HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE])
150 HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO])
151 HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO])
152 HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
153 HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
154 HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
155 HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
156 HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
157 HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
158 HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
159 HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
160 HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE])
161 HAVE_POPEN=1; AC_SUBST([HAVE_POPEN])
162 HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
163 HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
164 HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
165 REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
166 REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
167 REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN])
168 REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
169 REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
170 REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
171 REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE])
172 REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN])
173 REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK])
174 REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO])
175 REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL])
176 REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO])
177 REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM])
178 REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE])
179 REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF])
180 REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR])
181 REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN])
182 REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF])
183 REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE])
184 REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME])
185 REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT])
186 REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
187 REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
188 REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS])
189 REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
190 REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE])
191 REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF])
192 REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF])
193 REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF])
194 REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF])
195 REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
196 REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])