Support non-blocking pipe I/O in write() on native Windows.
[gnulib.git] / m4 / stdio_h.m4
1 # stdio_h.m4 serial 34
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   dnl No need to create extra modules for these functions. Everyone who uses
13   dnl <stdio.h> likely needs them.
14   GNULIB_FPRINTF=1
15   GNULIB_PRINTF=1
16   GNULIB_VFPRINTF=1
17   GNULIB_VPRINTF=1
18   GNULIB_FPUTC=1
19   GNULIB_PUTC=1
20   GNULIB_PUTCHAR=1
21   GNULIB_FPUTS=1
22   GNULIB_PUTS=1
23   GNULIB_FWRITE=1
24   dnl This ifdef is just an optimization, to avoid performing a configure
25   dnl check whose result is not used. It does not make the test of
26   dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant.
27   m4_ifdef([gl_SIGNAL_SIGPIPE], [
28     gl_SIGNAL_SIGPIPE
29     if test $gl_cv_header_signal_h_SIGPIPE != yes; then
30       REPLACE_STDIO_WRITE_FUNCS=1
31     fi
32   ])
33   m4_ifdef([gl_NONBLOCKING_IO], [
34     gl_NONBLOCKING_IO
35     if test $gl_cv_have_nonblocking != yes; then
36       REPLACE_STDIO_WRITE_FUNCS=1
37     fi
38   ])
39   if test $REPLACE_STDIO_WRITE_FUNCS = 1; then
40     AC_LIBOBJ([stdio-write])
41   fi
42
43   dnl Check for declarations of anything we want to poison if the
44   dnl corresponding gnulib module is not in use, and which is not
45   dnl guaranteed by C89.
46   gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
47     ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
48     snprintf tmpfile vdprintf vsnprintf])
49 ])
50
51 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
52 [
53   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
54   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
55   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
56   dnl Define it also as a C macro, for the benefit of the unit tests.
57   gl_MODULE_INDICATOR_FOR_TESTS([$1])
58 ])
59
60 AC_DEFUN([gl_STDIO_H_DEFAULTS],
61 [
62   GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
63   GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
64   GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
65   GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
66   GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
67   GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
68   GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
69   GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
70   GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
71   GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
72   GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
73   GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
74   GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
75   GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
76   GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
77   GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
78   GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
79   GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
80   GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
81   GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
82   GNULIB_POPEN=0;                AC_SUBST([GNULIB_POPEN])
83   GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
84   GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
85   GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
86   GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
87   GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
88   GNULIB_REMOVE=0;               AC_SUBST([GNULIB_REMOVE])
89   GNULIB_RENAME=0;               AC_SUBST([GNULIB_RENAME])
90   GNULIB_RENAMEAT=0;             AC_SUBST([GNULIB_RENAMEAT])
91   GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
92   GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
93   GNULIB_STDIO_H_NONBLOCKING=0;  AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
94   GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
95   GNULIB_TMPFILE=0;              AC_SUBST([GNULIB_TMPFILE])
96   GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
97   GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
98   GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
99   GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
100   GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
101   GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
102   GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
103   GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
104   dnl Assume proper GNU behavior unless another module says otherwise.
105   HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
106   HAVE_DECL_FSEEKO=1;            AC_SUBST([HAVE_DECL_FSEEKO])
107   HAVE_DECL_FTELLO=1;            AC_SUBST([HAVE_DECL_FTELLO])
108   HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
109   HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
110   HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
111   HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
112   HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
113   HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
114   HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
115   HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
116   HAVE_RENAMEAT=1;               AC_SUBST([HAVE_RENAMEAT])
117   HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
118   HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
119   REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
120   REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
121   REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
122   REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
123   REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
124   REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
125   REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
126   REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
127   REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
128   REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
129   REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
130   REPLACE_GETDELIM=0;            AC_SUBST([REPLACE_GETDELIM])
131   REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
132   REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
133   REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
134   REPLACE_POPEN=0;               AC_SUBST([REPLACE_POPEN])
135   REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
136   REPLACE_REMOVE=0;              AC_SUBST([REPLACE_REMOVE])
137   REPLACE_RENAME=0;              AC_SUBST([REPLACE_RENAME])
138   REPLACE_RENAMEAT=0;            AC_SUBST([REPLACE_RENAMEAT])
139   REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
140   REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
141   REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
142   REPLACE_TMPFILE=0;             AC_SUBST([REPLACE_TMPFILE])
143   REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
144   REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
145   REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
146   REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
147   REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
148   REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
149 ])