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