2
dnl Copyright (C) 2007-2010 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
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
10
AC_REQUIRE([AC_C_INLINE])
11
AC_REQUIRE([gl_ASM_SYMBOL_PREFIX])
12
gl_CHECK_NEXT_HEADERS([stdio.h])
13
dnl No need to create extra modules for these functions. Everyone who uses
14
dnl <stdio.h> likely needs them.
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_SIGPIPE or GNULIB_SIGPIPE redundant.
28
m4_ifdef([gl_SIGNAL_SIGPIPE], [
30
if test $gl_cv_header_signal_h_SIGPIPE != yes; then
31
REPLACE_STDIO_WRITE_FUNCS=1
32
AC_LIBOBJ([stdio-write])
36
dnl Check for declarations of anything we want to poison if the
37
dnl corresponding gnulib module is not in use, and which is not
38
dnl guaranteed by C89.
39
gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
40
]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
41
snprintf tmpfile vdprintf vsnprintf])
44
AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
46
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
47
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
48
gl_MODULE_INDICATOR_SET_VARIABLE([$1])
49
dnl Define it also as a C macro, for the benefit of the unit tests.
50
gl_MODULE_INDICATOR_FOR_TESTS([$1])
53
AC_DEFUN([gl_STDIO_H_DEFAULTS],
55
GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
56
GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
57
GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
58
GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
59
GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
60
GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
61
GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
62
GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
63
GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
64
GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
65
GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
66
GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
67
GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
68
GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
69
GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
70
GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
71
GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
72
GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
73
GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
74
GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
75
GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
76
GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
77
GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX])
78
GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC])
79
GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR])
80
GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS])
81
GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
82
GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
83
GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
84
GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
85
GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
86
GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
87
GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
88
GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
89
GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
90
GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
91
GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
92
GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF])
93
GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX])
94
GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
95
GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
96
dnl Assume proper GNU behavior unless another module says otherwise.
97
HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE])
98
HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
99
HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
100
HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
101
HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
102
HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
103
HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
104
HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
105
HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
106
HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
107
HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
108
HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
109
REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
110
REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
111
REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
112
REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
113
REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
114
REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE])
115
REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN])
116
REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK])
117
REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO])
118
REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL])
119
REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO])
120
REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM])
121
REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE])
122
REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF])
123
REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR])
124
REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN])
125
REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF])
126
REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE])
127
REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME])
128
REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT])
129
REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
130
REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
131
REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
132
REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE])
133
REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF])
134
REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF])
135
REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF])
136
REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF])
137
REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
138
REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])
141
dnl Code shared by fseeko and ftello. Determine if large files are supported,
142
dnl but stdin does not start as a large file by default.
143
AC_DEFUN([gl_STDIN_LARGE_OFFSET],
145
AC_CACHE_CHECK([whether stdin defaults to large file offsets],
146
[gl_cv_var_stdin_large_offset],
147
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
148
[[#if defined __SL64 && defined __SCLE /* cygwin */
149
/* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
150
fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and
151
it is easier to do a version check than building a runtime test. */
152
# include <cygwin/version.h>
153
# if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
157
[gl_cv_var_stdin_large_offset=yes],
158
[gl_cv_var_stdin_large_offset=no])])