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