summaryrefslogtreecommitdiffstats
path: root/gl/m4/stdio_h.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gl/m4/stdio_h.m4')
-rw-r--r--gl/m4/stdio_h.m497
1 files changed, 66 insertions, 31 deletions
diff --git a/gl/m4/stdio_h.m4 b/gl/m4/stdio_h.m4
index f5650cde..ebade067 100644
--- a/gl/m4/stdio_h.m4
+++ b/gl/m4/stdio_h.m4
@@ -1,5 +1,5 @@
1# stdio_h.m4 serial 31 1# stdio_h.m4 serial 43
2dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. 2dnl Copyright (C) 2007-2013 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved. 5dnl with or without modifications, as long as this notice is preserved.
@@ -7,9 +7,32 @@ dnl with or without modifications, as long as this notice is preserved.
7AC_DEFUN([gl_STDIO_H], 7AC_DEFUN([gl_STDIO_H],
8[ 8[
9 AC_REQUIRE([gl_STDIO_H_DEFAULTS]) 9 AC_REQUIRE([gl_STDIO_H_DEFAULTS])
10 AC_REQUIRE([AC_C_INLINE]) 10 gl_NEXT_HEADERS([stdio.h])
11 AC_REQUIRE([gl_ASM_SYMBOL_PREFIX]) 11
12 gl_CHECK_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_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
13 dnl No need to create extra modules for these functions. Everyone who uses 36 dnl No need to create extra modules for these functions. Everyone who uses
14 dnl <stdio.h> likely needs them. 37 dnl <stdio.h> likely needs them.
15 GNULIB_FPRINTF=1 38 GNULIB_FPRINTF=1
@@ -22,9 +45,11 @@ AC_DEFUN([gl_STDIO_H],
22 GNULIB_FPUTS=1 45 GNULIB_FPUTS=1
23 GNULIB_PUTS=1 46 GNULIB_PUTS=1
24 GNULIB_FWRITE=1 47 GNULIB_FWRITE=1
25 dnl This ifdef is just an optimization, to avoid performing a configure 48 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
26 dnl check whose result is not used. It does not make the test of 49 dnl "expected source file, required through AC_LIBSOURCES, not found". It is
27 dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant. 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.
28 m4_ifdef([gl_SIGNAL_SIGPIPE], [ 53 m4_ifdef([gl_SIGNAL_SIGPIPE], [
29 gl_SIGNAL_SIGPIPE 54 gl_SIGNAL_SIGPIPE
30 if test $gl_cv_header_signal_h_SIGPIPE != yes; then 55 if test $gl_cv_header_signal_h_SIGPIPE != yes; then
@@ -32,13 +57,25 @@ AC_DEFUN([gl_STDIO_H],
32 AC_LIBOBJ([stdio-write]) 57 AC_LIBOBJ([stdio-write])
33 fi 58 fi
34 ]) 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 ])
35 72
36 dnl Check for declarations of anything we want to poison if the 73 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 74 dnl corresponding gnulib module is not in use, and which is not
38 dnl guaranteed by C89. 75 dnl guaranteed by both C89 and C11.
39 gl_WARN_ON_USE_PREPARE([[#include <stdio.h> 76 gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
40 ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat 77 ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
41 snprintf tmpfile vdprintf vsnprintf]) 78 renameat snprintf tmpfile vdprintf vsnprintf])
42]) 79])
43 80
44AC_DEFUN([gl_STDIO_MODULE_INDICATOR], 81AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
@@ -54,23 +91,31 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
54[ 91[
55 GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF]) 92 GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
56 GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE]) 93 GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
94 GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN])
57 GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH]) 95 GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
96 GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC])
97 GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS])
58 GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN]) 98 GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
59 GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF]) 99 GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
60 GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX]) 100 GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
61 GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE]) 101 GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
62 GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC]) 102 GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
63 GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS]) 103 GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
104 GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD])
64 GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN]) 105 GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
106 GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF])
65 GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK]) 107 GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
66 GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO]) 108 GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
67 GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL]) 109 GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
68 GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO]) 110 GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
69 GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE]) 111 GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
112 GNULIB_GETC=0; AC_SUBST([GNULIB_GETC])
113 GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR])
70 GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM]) 114 GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
71 GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE]) 115 GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
72 GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF]) 116 GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
73 GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX]) 117 GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
118 GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
74 GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR]) 119 GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
75 GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN]) 120 GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
76 GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF]) 121 GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
@@ -81,11 +126,15 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
81 GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE]) 126 GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
82 GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME]) 127 GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
83 GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT]) 128 GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
129 GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF])
84 GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF]) 130 GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
85 GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX]) 131 GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
132 GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
86 GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE]) 133 GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
87 GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE]) 134 GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
88 GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF]) 135 GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
136 GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF])
137 GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF])
89 GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF]) 138 GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
90 GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF]) 139 GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
91 GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX]) 140 GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
@@ -95,6 +144,8 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
95 GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX]) 144 GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
96 dnl Assume proper GNU behavior unless another module says otherwise. 145 dnl Assume proper GNU behavior unless another module says otherwise.
97 HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) 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])
98 HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM]) 149 HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
99 HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE]) 150 HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
100 HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF]) 151 HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
@@ -103,11 +154,14 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
103 HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF]) 154 HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
104 HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO]) 155 HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
105 HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO]) 156 HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
157 HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE])
158 HAVE_POPEN=1; AC_SUBST([HAVE_POPEN])
106 HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT]) 159 HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
107 HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF]) 160 HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
108 HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF]) 161 HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
109 REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF]) 162 REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
110 REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE]) 163 REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
164 REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN])
111 REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) 165 REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
112 REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) 166 REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
113 REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) 167 REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
@@ -128,6 +182,7 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
128 REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT]) 182 REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT])
129 REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF]) 183 REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
130 REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF]) 184 REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
185 REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS])
131 REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS]) 186 REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
132 REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE]) 187 REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE])
133 REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF]) 188 REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF])
@@ -137,23 +192,3 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
137 REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF]) 192 REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
138 REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF]) 193 REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])
139]) 194])
140
141dnl Code shared by fseeko and ftello. Determine if large files are supported,
142dnl but stdin does not start as a large file by default.
143AC_DEFUN([gl_STDIN_LARGE_OFFSET],
144 [
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)
154 choke me
155# endif
156#endif]])],
157 [gl_cv_var_stdin_large_offset=yes],
158 [gl_cv_var_stdin_large_offset=no])])
159])