Support non-blocking pipe I/O in read() on native Windows.
[gnulib.git] / m4 / stdio_h.m4
1 # stdio_h.m4 serial 35
2 dnl Copyright (C) 2007-2011 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.
6
7 AC_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   GNULIB_SCANF=1
17   GNULIB_VFSCANF=1
18   GNULIB_VSCANF=1
19   GNULIB_FGETC=1
20   GNULIB_GETC=1
21   GNULIB_GETCHAR=1
22   GNULIB_FGETS=1
23   GNULIB_GETS=1
24   GNULIB_FREAD=1
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_NONBLOCKING 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 just an optimization, to avoid performing a configure
49   dnl check whose result is not used. It does not make the test of
50   dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant.
51   m4_ifdef([gl_SIGNAL_SIGPIPE], [
52     gl_SIGNAL_SIGPIPE
53     if test $gl_cv_header_signal_h_SIGPIPE != yes; then
54       REPLACE_STDIO_WRITE_FUNCS=1
55     fi
56   ])
57   m4_ifdef([gl_NONBLOCKING_IO], [
58     gl_NONBLOCKING_IO
59     if test $gl_cv_have_nonblocking != yes; then
60       REPLACE_STDIO_WRITE_FUNCS=1
61     fi
62   ])
63   if test $REPLACE_STDIO_WRITE_FUNCS = 1; then
64     AC_LIBOBJ([stdio-write])
65   fi
66
67   dnl Check for declarations of anything we want to poison if the
68   dnl corresponding gnulib module is not in use, and which is not
69   dnl guaranteed by C89.
70   gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
71     ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
72     snprintf tmpfile vdprintf vsnprintf])
73 ])
74
75 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
76 [
77   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
78   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
79   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
80   dnl Define it also as a C macro, for the benefit of the unit tests.
81   gl_MODULE_INDICATOR_FOR_TESTS([$1])
82 ])
83
84 AC_DEFUN([gl_STDIO_H_DEFAULTS],
85 [
86   GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
87   GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
88   GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
89   GNULIB_FGETC=0;                AC_SUBST([GNULIB_FGETC])
90   GNULIB_FGETS=0;                AC_SUBST([GNULIB_FGETS])
91   GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
92   GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
93   GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
94   GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
95   GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
96   GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
97   GNULIB_FREAD=0;                AC_SUBST([GNULIB_FREAD])
98   GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
99   GNULIB_FSCANF=0;               AC_SUBST([GNULIB_FSCANF])
100   GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
101   GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
102   GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
103   GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
104   GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
105   GNULIB_GETC=0;                 AC_SUBST([GNULIB_GETC])
106   GNULIB_GETCHAR=0;              AC_SUBST([GNULIB_GETCHAR])
107   GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
108   GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
109   GNULIB_GETS=0;                 AC_SUBST([GNULIB_GETS])
110   GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
111   GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
112   GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
113   GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
114   GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
115   GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
116   GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
117   GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
118   GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
119   GNULIB_REMOVE=0;               AC_SUBST([GNULIB_REMOVE])
120   GNULIB_RENAME=0;               AC_SUBST([GNULIB_RENAME])
121   GNULIB_RENAMEAT=0;             AC_SUBST([GNULIB_RENAMEAT])
122   GNULIB_SCANF=0;                AC_SUBST([GNULIB_SCANF])
123   GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
124   GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
125   GNULIB_STDIO_H_NONBLOCKING=0;  AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
126   GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
127   GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
128   GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
129   GNULIB_VFSCANF=0;              AC_SUBST([GNULIB_VFSCANF])
130   GNULIB_VSCANF=0;               AC_SUBST([GNULIB_VSCANF])
131   GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
132   GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
133   GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
134   GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
135   GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
136   GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
137   GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
138   dnl Assume proper GNU behavior unless another module says otherwise.
139   HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
140   HAVE_DECL_FSEEKO=1;            AC_SUBST([HAVE_DECL_FSEEKO])
141   HAVE_DECL_FTELLO=1;            AC_SUBST([HAVE_DECL_FTELLO])
142   HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
143   HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
144   HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
145   HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
146   HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
147   HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
148   HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
149   HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
150   HAVE_RENAMEAT=1;               AC_SUBST([HAVE_RENAMEAT])
151   HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
152   HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
153   REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
154   REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
155   REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
156   REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
157   REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
158   REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
159   REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
160   REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
161   REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
162   REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
163   REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
164   REPLACE_GETDELIM=0;            AC_SUBST([REPLACE_GETDELIM])
165   REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
166   REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
167   REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
168   REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
169   REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
170   REPLACE_REMOVE=0;              AC_SUBST([REPLACE_REMOVE])
171   REPLACE_RENAME=0;              AC_SUBST([REPLACE_RENAME])
172   REPLACE_RENAMEAT=0;            AC_SUBST([REPLACE_RENAMEAT])
173   REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
174   REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
175   REPLACE_STDIO_READ_FUNCS=0;    AC_SUBST([REPLACE_STDIO_READ_FUNCS])
176   REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
177   REPLACE_TMPFILE=0;             AC_SUBST([REPLACE_TMPFILE])
178   REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
179   REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
180   REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
181   REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
182   REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
183   REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
184 ])