diff options
author | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2022-08-23 19:42:51 +0200 |
---|---|---|
committer | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2022-09-14 11:08:55 +0200 |
commit | 868beb15ae02c352005a2df8857f4ebb9bd758fd (patch) | |
tree | 0dc6e6a91c4ef0f131ca82a777e6ac2ad193c399 /gl/stdio.in.h | |
parent | b89aee56964f7d933f2da5f371e32b4d7db9410b (diff) | |
download | monitoring-plugins-868beb15ae02c352005a2df8857f4ebb9bd758fd.tar.gz |
Sync with the latest Gnulib code (d27c820595)
Diffstat (limited to 'gl/stdio.in.h')
-rw-r--r-- | gl/stdio.in.h | 715 |
1 files changed, 541 insertions, 174 deletions
diff --git a/gl/stdio.in.h b/gl/stdio.in.h index 06cbad00..7b36dac2 100644 --- a/gl/stdio.in.h +++ b/gl/stdio.in.h | |||
@@ -1,19 +1,19 @@ | |||
1 | /* A GNU-like <stdio.h>. | 1 | /* A GNU-like <stdio.h>. |
2 | 2 | ||
3 | Copyright (C) 2004, 2007-2013 Free Software Foundation, Inc. | 3 | Copyright (C) 2004, 2007-2022 Free Software Foundation, Inc. |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This file is free software: you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU Lesser General Public License as |
7 | the Free Software Foundation; either version 3, or (at your option) | 7 | published by the Free Software Foundation; either version 2.1 of the |
8 | any later version. | 8 | License, or (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This file is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU Lesser General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU Lesser General Public License |
16 | along with this program; if not, see <http://www.gnu.org/licenses/>. */ | 16 | along with this program. If not, see <https://www.gnu.org/licenses/>. */ |
17 | 17 | ||
18 | #if __GNUC__ >= 3 | 18 | #if __GNUC__ >= 3 |
19 | @PRAGMA_SYSTEM_HEADER@ | 19 | @PRAGMA_SYSTEM_HEADER@ |
@@ -56,36 +56,103 @@ | |||
56 | May also define off_t to a 64-bit type on native Windows. */ | 56 | May also define off_t to a 64-bit type on native Windows. */ |
57 | #include <sys/types.h> | 57 | #include <sys/types.h> |
58 | 58 | ||
59 | /* Solaris 10 and NetBSD 7.0 declare renameat in <unistd.h>, not in <stdio.h>. */ | ||
60 | /* But in any case avoid namespace pollution on glibc systems. */ | ||
61 | #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \ | ||
62 | && ! defined __GLIBC__ | ||
63 | # include <unistd.h> | ||
64 | #endif | ||
65 | |||
66 | /* Android 4.3 declares renameat in <sys/stat.h>, not in <stdio.h>. */ | ||
67 | /* But in any case avoid namespace pollution on glibc systems. */ | ||
68 | #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \ | ||
69 | && ! defined __GLIBC__ | ||
70 | # include <sys/stat.h> | ||
71 | #endif | ||
72 | |||
73 | /* MSVC declares 'perror' in <stdlib.h>, not in <stdio.h>. We must include | ||
74 | it before we #define perror rpl_perror. */ | ||
75 | /* But in any case avoid namespace pollution on glibc systems. */ | ||
76 | #if (@GNULIB_PERROR@ || defined GNULIB_POSIXCHECK) \ | ||
77 | && (defined _WIN32 && ! defined __CYGWIN__) \ | ||
78 | && ! defined __GLIBC__ | ||
79 | # include <stdlib.h> | ||
80 | #endif | ||
81 | |||
82 | /* MSVC declares 'remove' in <io.h>, not in <stdio.h>. We must include | ||
83 | it before we #define remove rpl_remove. */ | ||
84 | /* MSVC declares 'rename' in <io.h>, not in <stdio.h>. We must include | ||
85 | it before we #define rename rpl_rename. */ | ||
86 | /* But in any case avoid namespace pollution on glibc systems. */ | ||
87 | #if (@GNULIB_REMOVE@ || @GNULIB_RENAME@ || defined GNULIB_POSIXCHECK) \ | ||
88 | && (defined _WIN32 && ! defined __CYGWIN__) \ | ||
89 | && ! defined __GLIBC__ | ||
90 | # include <io.h> | ||
91 | #endif | ||
92 | |||
93 | |||
94 | /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers | ||
95 | that can be freed by passing them as the Ith argument to the | ||
96 | function F. */ | ||
97 | #ifndef _GL_ATTRIBUTE_DEALLOC | ||
98 | # if __GNUC__ >= 11 | ||
99 | # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) | ||
100 | # else | ||
101 | # define _GL_ATTRIBUTE_DEALLOC(f, i) | ||
102 | # endif | ||
103 | #endif | ||
104 | |||
59 | /* The __attribute__ feature is available in gcc versions 2.5 and later. | 105 | /* The __attribute__ feature is available in gcc versions 2.5 and later. |
60 | The __-protected variants of the attributes 'format' and 'printf' are | 106 | The __-protected variants of the attributes 'format' and 'printf' are |
61 | accepted by gcc versions 2.6.4 (effectively 2.7) and later. | 107 | accepted by gcc versions 2.6.4 (effectively 2.7) and later. |
62 | We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because | 108 | We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because |
63 | gnulib and libintl do '#define printf __printf__' when they override | 109 | gnulib and libintl do '#define printf __printf__' when they override |
64 | the 'printf' function. */ | 110 | the 'printf' function. */ |
65 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) | 111 | #ifndef _GL_ATTRIBUTE_FORMAT |
66 | # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) | 112 | # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) || defined __clang__ |
113 | # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) | ||
114 | # else | ||
115 | # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ | ||
116 | # endif | ||
117 | #endif | ||
118 | |||
119 | /* An __attribute__ __format__ specifier for a function that takes a format | ||
120 | string and arguments, where the format string directives are the ones | ||
121 | standardized by ISO C99 and POSIX. | ||
122 | _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD */ | ||
123 | /* __gnu_printf__ is supported in GCC >= 4.4. */ | ||
124 | #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) | ||
125 | # define _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD __gnu_printf__ | ||
67 | #else | 126 | #else |
68 | # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ | 127 | # define _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD __printf__ |
69 | #endif | 128 | #endif |
70 | 129 | ||
71 | /* _GL_ATTRIBUTE_FORMAT_PRINTF | 130 | /* An __attribute__ __format__ specifier for a function that takes a format |
131 | string and arguments, where the format string directives are the ones of the | ||
132 | system printf(), rather than the ones standardized by ISO C99 and POSIX. | ||
133 | _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM */ | ||
134 | /* On mingw, Gnulib sets __USE_MINGW_ANSI_STDIO in order to get closer to | ||
135 | the standards. The macro GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU indicates | ||
136 | whether this change is effective. On older mingw, it is not. */ | ||
137 | #if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU | ||
138 | # define _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD | ||
139 | #else | ||
140 | # define _GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM __printf__ | ||
141 | #endif | ||
142 | |||
143 | /* _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD | ||
72 | indicates to GCC that the function takes a format string and arguments, | 144 | indicates to GCC that the function takes a format string and arguments, |
73 | where the format string directives are the ones standardized by ISO C99 | 145 | where the format string directives are the ones standardized by ISO C99 |
74 | and POSIX. */ | 146 | and POSIX. */ |
75 | #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) | 147 | #define _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD(formatstring_parameter, first_argument) \ |
76 | # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ | 148 | _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, formatstring_parameter, first_argument)) |
77 | _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) | ||
78 | #else | ||
79 | # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ | ||
80 | _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) | ||
81 | #endif | ||
82 | 149 | ||
83 | /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, | 150 | /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD, |
84 | except that it indicates to GCC that the supported format string directives | 151 | except that it indicates to GCC that the supported format string directives |
85 | are the ones of the system printf(), rather than the ones standardized by | 152 | are the ones of the system printf(), rather than the ones standardized by |
86 | ISO C99 and POSIX. */ | 153 | ISO C99 and POSIX. */ |
87 | #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ | 154 | #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ |
88 | _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) | 155 | _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_SYSTEM, formatstring_parameter, first_argument)) |
89 | 156 | ||
90 | /* _GL_ATTRIBUTE_FORMAT_SCANF | 157 | /* _GL_ATTRIBUTE_FORMAT_SCANF |
91 | indicates to GCC that the function takes a format string and arguments, | 158 | indicates to GCC that the function takes a format string and arguments, |
@@ -106,14 +173,6 @@ | |||
106 | #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ | 173 | #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ |
107 | _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) | 174 | _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) |
108 | 175 | ||
109 | /* Solaris 10 declares renameat in <unistd.h>, not in <stdio.h>. */ | ||
110 | /* But in any case avoid namespace pollution on glibc systems. */ | ||
111 | #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __sun \ | ||
112 | && ! defined __GLIBC__ | ||
113 | # include <unistd.h> | ||
114 | #endif | ||
115 | |||
116 | |||
117 | /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ | 176 | /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ |
118 | 177 | ||
119 | /* The definition of _GL_ARG_NONNULL is copied here. */ | 178 | /* The definition of _GL_ARG_NONNULL is copied here. */ |
@@ -124,23 +183,32 @@ | |||
124 | #define _GL_STDIO_STRINGIZE(token) #token | 183 | #define _GL_STDIO_STRINGIZE(token) #token |
125 | #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) | 184 | #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) |
126 | 185 | ||
186 | /* When also using extern inline, suppress the use of static inline in | ||
187 | standard headers of problematic Apple configurations, as Libc at | ||
188 | least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., | ||
189 | <https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>. | ||
190 | Perhaps Apple will fix this some day. */ | ||
191 | #if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ | ||
192 | && defined __GNUC__ && defined __STDC__) | ||
193 | # undef putc_unlocked | ||
194 | #endif | ||
127 | 195 | ||
128 | #if @GNULIB_DPRINTF@ | 196 | #if @GNULIB_DPRINTF@ |
129 | # if @REPLACE_DPRINTF@ | 197 | # if @REPLACE_DPRINTF@ |
130 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 198 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
131 | # define dprintf rpl_dprintf | 199 | # define dprintf rpl_dprintf |
132 | # endif | 200 | # endif |
133 | _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) | 201 | _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *restrict format, ...) |
134 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 202 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
135 | _GL_ARG_NONNULL ((2))); | 203 | _GL_ARG_NONNULL ((2))); |
136 | _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); | 204 | _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *restrict format, ...)); |
137 | # else | 205 | # else |
138 | # if !@HAVE_DPRINTF@ | 206 | # if !@HAVE_DPRINTF@ |
139 | _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) | 207 | _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *restrict format, ...) |
140 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 208 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
141 | _GL_ARG_NONNULL ((2))); | 209 | _GL_ARG_NONNULL ((2))); |
142 | # endif | 210 | # endif |
143 | _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); | 211 | _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *restrict format, ...)); |
144 | # endif | 212 | # endif |
145 | _GL_CXXALIASWARN (dprintf); | 213 | _GL_CXXALIASWARN (dprintf); |
146 | #elif defined GNULIB_POSIXCHECK | 214 | #elif defined GNULIB_POSIXCHECK |
@@ -162,7 +230,9 @@ _GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); | |||
162 | # else | 230 | # else |
163 | _GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); | 231 | _GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); |
164 | # endif | 232 | # endif |
233 | # if __GLIBC__ >= 2 | ||
165 | _GL_CXXALIASWARN (fclose); | 234 | _GL_CXXALIASWARN (fclose); |
235 | # endif | ||
166 | #elif defined GNULIB_POSIXCHECK | 236 | #elif defined GNULIB_POSIXCHECK |
167 | # undef fclose | 237 | # undef fclose |
168 | /* Assume fclose is always declared. */ | 238 | /* Assume fclose is always declared. */ |
@@ -170,24 +240,84 @@ _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " | |||
170 | "use gnulib module fclose for portable POSIX compliance"); | 240 | "use gnulib module fclose for portable POSIX compliance"); |
171 | #endif | 241 | #endif |
172 | 242 | ||
243 | #if @GNULIB_MDA_FCLOSEALL@ | ||
244 | /* On native Windows, map 'fcloseall' to '_fcloseall', so that -loldnames is | ||
245 | not required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
246 | platforms by defining GNULIB_NAMESPACE::fcloseall on all platforms that have | ||
247 | it. */ | ||
248 | # if defined _WIN32 && !defined __CYGWIN__ | ||
249 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
250 | # undef fcloseall | ||
251 | # define fcloseall _fcloseall | ||
252 | # endif | ||
253 | _GL_CXXALIAS_MDA (fcloseall, int, (void)); | ||
254 | # else | ||
255 | # if @HAVE_DECL_FCLOSEALL@ | ||
256 | # if defined __FreeBSD__ || defined __DragonFly__ | ||
257 | _GL_CXXALIAS_SYS (fcloseall, void, (void)); | ||
258 | # else | ||
259 | _GL_CXXALIAS_SYS (fcloseall, int, (void)); | ||
260 | # endif | ||
261 | # endif | ||
262 | # endif | ||
263 | # if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_FCLOSEALL@ | ||
264 | _GL_CXXALIASWARN (fcloseall); | ||
265 | # endif | ||
266 | #endif | ||
267 | |||
173 | #if @GNULIB_FDOPEN@ | 268 | #if @GNULIB_FDOPEN@ |
174 | # if @REPLACE_FDOPEN@ | 269 | # if @REPLACE_FDOPEN@ |
175 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 270 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
176 | # undef fdopen | 271 | # undef fdopen |
177 | # define fdopen rpl_fdopen | 272 | # define fdopen rpl_fdopen |
178 | # endif | 273 | # endif |
179 | _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) | 274 | _GL_FUNCDECL_RPL (fdopen, FILE *, |
180 | _GL_ARG_NONNULL ((2))); | 275 | (int fd, const char *mode) |
276 | _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
181 | _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); | 277 | _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); |
278 | # elif defined _WIN32 && !defined __CYGWIN__ | ||
279 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
280 | # undef fdopen | ||
281 | # define fdopen _fdopen | ||
282 | # endif | ||
283 | _GL_CXXALIAS_MDA (fdopen, FILE *, (int fd, const char *mode)); | ||
182 | # else | 284 | # else |
285 | # if __GNUC__ >= 11 | ||
286 | /* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose. */ | ||
287 | _GL_FUNCDECL_SYS (fdopen, FILE *, | ||
288 | (int fd, const char *mode) | ||
289 | _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
290 | # endif | ||
183 | _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); | 291 | _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); |
184 | # endif | 292 | # endif |
185 | _GL_CXXALIASWARN (fdopen); | 293 | _GL_CXXALIASWARN (fdopen); |
186 | #elif defined GNULIB_POSIXCHECK | 294 | #else |
187 | # undef fdopen | 295 | # if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined fdopen |
296 | /* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose. */ | ||
297 | _GL_FUNCDECL_SYS (fdopen, FILE *, | ||
298 | (int fd, const char *mode) | ||
299 | _GL_ARG_NONNULL ((2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
300 | # endif | ||
301 | # if defined GNULIB_POSIXCHECK | ||
302 | # undef fdopen | ||
188 | /* Assume fdopen is always declared. */ | 303 | /* Assume fdopen is always declared. */ |
189 | _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " | 304 | _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " |
190 | "use gnulib module fdopen for portability"); | 305 | "use gnulib module fdopen for portability"); |
306 | # elif @GNULIB_MDA_FDOPEN@ | ||
307 | /* On native Windows, map 'fdopen' to '_fdopen', so that -loldnames is not | ||
308 | required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
309 | platforms by defining GNULIB_NAMESPACE::fdopen always. */ | ||
310 | # if defined _WIN32 && !defined __CYGWIN__ | ||
311 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
312 | # undef fdopen | ||
313 | # define fdopen _fdopen | ||
314 | # endif | ||
315 | _GL_CXXALIAS_MDA (fdopen, FILE *, (int fd, const char *mode)); | ||
316 | # else | ||
317 | _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); | ||
318 | # endif | ||
319 | _GL_CXXALIASWARN (fdopen); | ||
320 | # endif | ||
191 | #endif | 321 | #endif |
192 | 322 | ||
193 | #if @GNULIB_FFLUSH@ | 323 | #if @GNULIB_FFLUSH@ |
@@ -206,7 +336,9 @@ _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); | |||
206 | # else | 336 | # else |
207 | _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); | 337 | _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); |
208 | # endif | 338 | # endif |
339 | # if __GLIBC__ >= 2 | ||
209 | _GL_CXXALIASWARN (fflush); | 340 | _GL_CXXALIASWARN (fflush); |
341 | # endif | ||
210 | #elif defined GNULIB_POSIXCHECK | 342 | #elif defined GNULIB_POSIXCHECK |
211 | # undef fflush | 343 | # undef fflush |
212 | /* Assume fflush is always declared. */ | 344 | /* Assume fflush is always declared. */ |
@@ -225,7 +357,9 @@ _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); | |||
225 | # else | 357 | # else |
226 | _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); | 358 | _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); |
227 | # endif | 359 | # endif |
360 | # if __GLIBC__ >= 2 | ||
228 | _GL_CXXALIASWARN (fgetc); | 361 | _GL_CXXALIASWARN (fgetc); |
362 | # endif | ||
229 | #endif | 363 | #endif |
230 | 364 | ||
231 | #if @GNULIB_FGETS@ | 365 | #if @GNULIB_FGETS@ |
@@ -234,33 +368,74 @@ _GL_CXXALIASWARN (fgetc); | |||
234 | # undef fgets | 368 | # undef fgets |
235 | # define fgets rpl_fgets | 369 | # define fgets rpl_fgets |
236 | # endif | 370 | # endif |
237 | _GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) | 371 | _GL_FUNCDECL_RPL (fgets, char *, |
238 | _GL_ARG_NONNULL ((1, 3))); | 372 | (char *restrict s, int n, FILE *restrict stream) |
239 | _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); | 373 | _GL_ARG_NONNULL ((1, 3))); |
374 | _GL_CXXALIAS_RPL (fgets, char *, | ||
375 | (char *restrict s, int n, FILE *restrict stream)); | ||
240 | # else | 376 | # else |
241 | _GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); | 377 | _GL_CXXALIAS_SYS (fgets, char *, |
378 | (char *restrict s, int n, FILE *restrict stream)); | ||
242 | # endif | 379 | # endif |
380 | # if __GLIBC__ >= 2 | ||
243 | _GL_CXXALIASWARN (fgets); | 381 | _GL_CXXALIASWARN (fgets); |
382 | # endif | ||
383 | #endif | ||
384 | |||
385 | #if @GNULIB_MDA_FILENO@ | ||
386 | /* On native Windows, map 'fileno' to '_fileno', so that -loldnames is not | ||
387 | required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
388 | platforms by defining GNULIB_NAMESPACE::fileno always. */ | ||
389 | # if defined _WIN32 && !defined __CYGWIN__ | ||
390 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
391 | # undef fileno | ||
392 | # define fileno _fileno | ||
393 | # endif | ||
394 | _GL_CXXALIAS_MDA (fileno, int, (FILE *restrict stream)); | ||
395 | # else | ||
396 | _GL_CXXALIAS_SYS (fileno, int, (FILE *restrict stream)); | ||
397 | # endif | ||
398 | _GL_CXXALIASWARN (fileno); | ||
244 | #endif | 399 | #endif |
245 | 400 | ||
246 | #if @GNULIB_FOPEN@ | 401 | #if @GNULIB_FOPEN@ |
247 | # if @REPLACE_FOPEN@ | 402 | # if (@GNULIB_FOPEN@ && @REPLACE_FOPEN@) \ |
403 | || (@GNULIB_FOPEN_GNU@ && @REPLACE_FOPEN_FOR_FOPEN_GNU@) | ||
248 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 404 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
249 | # undef fopen | 405 | # undef fopen |
250 | # define fopen rpl_fopen | 406 | # define fopen rpl_fopen |
251 | # endif | 407 | # endif |
252 | _GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) | 408 | _GL_FUNCDECL_RPL (fopen, FILE *, |
253 | _GL_ARG_NONNULL ((1, 2))); | 409 | (const char *restrict filename, const char *restrict mode) |
254 | _GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); | 410 | _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); |
411 | _GL_CXXALIAS_RPL (fopen, FILE *, | ||
412 | (const char *restrict filename, const char *restrict mode)); | ||
255 | # else | 413 | # else |
256 | _GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); | 414 | # if __GNUC__ >= 11 |
415 | /* For -Wmismatched-dealloc: Associate fopen with fclose or rpl_fclose. */ | ||
416 | _GL_FUNCDECL_SYS (fopen, FILE *, | ||
417 | (const char *restrict filename, const char *restrict mode) | ||
418 | _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
419 | # endif | ||
420 | _GL_CXXALIAS_SYS (fopen, FILE *, | ||
421 | (const char *restrict filename, const char *restrict mode)); | ||
257 | # endif | 422 | # endif |
423 | # if __GLIBC__ >= 2 | ||
258 | _GL_CXXALIASWARN (fopen); | 424 | _GL_CXXALIASWARN (fopen); |
259 | #elif defined GNULIB_POSIXCHECK | 425 | # endif |
260 | # undef fopen | 426 | #else |
427 | # if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined fopen | ||
428 | /* For -Wmismatched-dealloc: Associate fopen with fclose or rpl_fclose. */ | ||
429 | _GL_FUNCDECL_SYS (fopen, FILE *, | ||
430 | (const char *restrict filename, const char *restrict mode) | ||
431 | _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
432 | # endif | ||
433 | # if defined GNULIB_POSIXCHECK | ||
434 | # undef fopen | ||
261 | /* Assume fopen is always declared. */ | 435 | /* Assume fopen is always declared. */ |
262 | _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " | 436 | _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " |
263 | "use gnulib module fopen for portability"); | 437 | "use gnulib module fopen for portability"); |
438 | # endif | ||
264 | #endif | 439 | #endif |
265 | 440 | ||
266 | #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ | 441 | #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ |
@@ -271,19 +446,25 @@ _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX complian | |||
271 | # endif | 446 | # endif |
272 | # define GNULIB_overrides_fprintf 1 | 447 | # define GNULIB_overrides_fprintf 1 |
273 | # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ | 448 | # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ |
274 | _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) | 449 | _GL_FUNCDECL_RPL (fprintf, int, |
275 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 450 | (FILE *restrict fp, const char *restrict format, ...) |
276 | _GL_ARG_NONNULL ((1, 2))); | 451 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
452 | _GL_ARG_NONNULL ((1, 2))); | ||
277 | # else | 453 | # else |
278 | _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) | 454 | _GL_FUNCDECL_RPL (fprintf, int, |
279 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) | 455 | (FILE *restrict fp, const char *restrict format, ...) |
280 | _GL_ARG_NONNULL ((1, 2))); | 456 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) |
457 | _GL_ARG_NONNULL ((1, 2))); | ||
281 | # endif | 458 | # endif |
282 | _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); | 459 | _GL_CXXALIAS_RPL (fprintf, int, |
460 | (FILE *restrict fp, const char *restrict format, ...)); | ||
283 | # else | 461 | # else |
284 | _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); | 462 | _GL_CXXALIAS_SYS (fprintf, int, |
463 | (FILE *restrict fp, const char *restrict format, ...)); | ||
285 | # endif | 464 | # endif |
465 | # if __GLIBC__ >= 2 | ||
286 | _GL_CXXALIASWARN (fprintf); | 466 | _GL_CXXALIASWARN (fprintf); |
467 | # endif | ||
287 | #endif | 468 | #endif |
288 | #if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK | 469 | #if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK |
289 | # if !GNULIB_overrides_fprintf | 470 | # if !GNULIB_overrides_fprintf |
@@ -334,7 +515,9 @@ _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); | |||
334 | # else | 515 | # else |
335 | _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); | 516 | _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); |
336 | # endif | 517 | # endif |
518 | # if __GLIBC__ >= 2 | ||
337 | _GL_CXXALIASWARN (fputc); | 519 | _GL_CXXALIASWARN (fputc); |
520 | # endif | ||
338 | #endif | 521 | #endif |
339 | 522 | ||
340 | #if @GNULIB_FPUTS@ | 523 | #if @GNULIB_FPUTS@ |
@@ -343,13 +526,18 @@ _GL_CXXALIASWARN (fputc); | |||
343 | # undef fputs | 526 | # undef fputs |
344 | # define fputs rpl_fputs | 527 | # define fputs rpl_fputs |
345 | # endif | 528 | # endif |
346 | _GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) | 529 | _GL_FUNCDECL_RPL (fputs, int, |
347 | _GL_ARG_NONNULL ((1, 2))); | 530 | (const char *restrict string, FILE *restrict stream) |
348 | _GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); | 531 | _GL_ARG_NONNULL ((1, 2))); |
532 | _GL_CXXALIAS_RPL (fputs, int, | ||
533 | (const char *restrict string, FILE *restrict stream)); | ||
349 | # else | 534 | # else |
350 | _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); | 535 | _GL_CXXALIAS_SYS (fputs, int, |
536 | (const char *restrict string, FILE *restrict stream)); | ||
351 | # endif | 537 | # endif |
538 | # if __GLIBC__ >= 2 | ||
352 | _GL_CXXALIASWARN (fputs); | 539 | _GL_CXXALIASWARN (fputs); |
540 | # endif | ||
353 | #endif | 541 | #endif |
354 | 542 | ||
355 | #if @GNULIB_FREAD@ | 543 | #if @GNULIB_FREAD@ |
@@ -358,13 +546,21 @@ _GL_CXXALIASWARN (fputs); | |||
358 | # undef fread | 546 | # undef fread |
359 | # define fread rpl_fread | 547 | # define fread rpl_fread |
360 | # endif | 548 | # endif |
361 | _GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) | 549 | _GL_FUNCDECL_RPL (fread, size_t, |
362 | _GL_ARG_NONNULL ((4))); | 550 | (void *restrict ptr, size_t s, size_t n, |
363 | _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); | 551 | FILE *restrict stream) |
552 | _GL_ARG_NONNULL ((4))); | ||
553 | _GL_CXXALIAS_RPL (fread, size_t, | ||
554 | (void *restrict ptr, size_t s, size_t n, | ||
555 | FILE *restrict stream)); | ||
364 | # else | 556 | # else |
365 | _GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); | 557 | _GL_CXXALIAS_SYS (fread, size_t, |
558 | (void *restrict ptr, size_t s, size_t n, | ||
559 | FILE *restrict stream)); | ||
366 | # endif | 560 | # endif |
561 | # if __GLIBC__ >= 2 | ||
367 | _GL_CXXALIASWARN (fread); | 562 | _GL_CXXALIASWARN (fread); |
563 | # endif | ||
368 | #endif | 564 | #endif |
369 | 565 | ||
370 | #if @GNULIB_FREOPEN@ | 566 | #if @GNULIB_FREOPEN@ |
@@ -374,15 +570,20 @@ _GL_CXXALIASWARN (fread); | |||
374 | # define freopen rpl_freopen | 570 | # define freopen rpl_freopen |
375 | # endif | 571 | # endif |
376 | _GL_FUNCDECL_RPL (freopen, FILE *, | 572 | _GL_FUNCDECL_RPL (freopen, FILE *, |
377 | (const char *filename, const char *mode, FILE *stream) | 573 | (const char *restrict filename, const char *restrict mode, |
574 | FILE *restrict stream) | ||
378 | _GL_ARG_NONNULL ((2, 3))); | 575 | _GL_ARG_NONNULL ((2, 3))); |
379 | _GL_CXXALIAS_RPL (freopen, FILE *, | 576 | _GL_CXXALIAS_RPL (freopen, FILE *, |
380 | (const char *filename, const char *mode, FILE *stream)); | 577 | (const char *restrict filename, const char *restrict mode, |
578 | FILE *restrict stream)); | ||
381 | # else | 579 | # else |
382 | _GL_CXXALIAS_SYS (freopen, FILE *, | 580 | _GL_CXXALIAS_SYS (freopen, FILE *, |
383 | (const char *filename, const char *mode, FILE *stream)); | 581 | (const char *restrict filename, const char *restrict mode, |
582 | FILE *restrict stream)); | ||
384 | # endif | 583 | # endif |
584 | # if __GLIBC__ >= 2 | ||
385 | _GL_CXXALIASWARN (freopen); | 585 | _GL_CXXALIASWARN (freopen); |
586 | # endif | ||
386 | #elif defined GNULIB_POSIXCHECK | 587 | #elif defined GNULIB_POSIXCHECK |
387 | # undef freopen | 588 | # undef freopen |
388 | /* Assume freopen is always declared. */ | 589 | /* Assume freopen is always declared. */ |
@@ -397,14 +598,19 @@ _GL_WARN_ON_USE (freopen, | |||
397 | # undef fscanf | 598 | # undef fscanf |
398 | # define fscanf rpl_fscanf | 599 | # define fscanf rpl_fscanf |
399 | # endif | 600 | # endif |
400 | _GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) | 601 | _GL_FUNCDECL_RPL (fscanf, int, |
401 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) | 602 | (FILE *restrict stream, const char *restrict format, ...) |
402 | _GL_ARG_NONNULL ((1, 2))); | 603 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) |
403 | _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); | 604 | _GL_ARG_NONNULL ((1, 2))); |
605 | _GL_CXXALIAS_RPL (fscanf, int, | ||
606 | (FILE *restrict stream, const char *restrict format, ...)); | ||
404 | # else | 607 | # else |
405 | _GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); | 608 | _GL_CXXALIAS_SYS (fscanf, int, |
609 | (FILE *restrict stream, const char *restrict format, ...)); | ||
406 | # endif | 610 | # endif |
611 | # if __GLIBC__ >= 2 | ||
407 | _GL_CXXALIASWARN (fscanf); | 612 | _GL_CXXALIASWARN (fscanf); |
613 | # endif | ||
408 | #endif | 614 | #endif |
409 | 615 | ||
410 | 616 | ||
@@ -455,7 +661,9 @@ _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); | |||
455 | # else | 661 | # else |
456 | _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); | 662 | _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); |
457 | # endif | 663 | # endif |
664 | # if __GLIBC__ >= 2 | ||
458 | _GL_CXXALIASWARN (fseek); | 665 | _GL_CXXALIASWARN (fseek); |
666 | # endif | ||
459 | #endif | 667 | #endif |
460 | 668 | ||
461 | #if @GNULIB_FSEEKO@ | 669 | #if @GNULIB_FSEEKO@ |
@@ -518,7 +726,9 @@ _GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); | |||
518 | # else | 726 | # else |
519 | _GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); | 727 | _GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); |
520 | # endif | 728 | # endif |
729 | # if __GLIBC__ >= 2 | ||
521 | _GL_CXXALIASWARN (ftell); | 730 | _GL_CXXALIASWARN (ftell); |
731 | # endif | ||
522 | #endif | 732 | #endif |
523 | 733 | ||
524 | #if @GNULIB_FTELLO@ | 734 | #if @GNULIB_FTELLO@ |
@@ -567,16 +777,19 @@ _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " | |||
567 | # define fwrite rpl_fwrite | 777 | # define fwrite rpl_fwrite |
568 | # endif | 778 | # endif |
569 | _GL_FUNCDECL_RPL (fwrite, size_t, | 779 | _GL_FUNCDECL_RPL (fwrite, size_t, |
570 | (const void *ptr, size_t s, size_t n, FILE *stream) | 780 | (const void *restrict ptr, size_t s, size_t n, |
781 | FILE *restrict stream) | ||
571 | _GL_ARG_NONNULL ((1, 4))); | 782 | _GL_ARG_NONNULL ((1, 4))); |
572 | _GL_CXXALIAS_RPL (fwrite, size_t, | 783 | _GL_CXXALIAS_RPL (fwrite, size_t, |
573 | (const void *ptr, size_t s, size_t n, FILE *stream)); | 784 | (const void *restrict ptr, size_t s, size_t n, |
785 | FILE *restrict stream)); | ||
574 | # else | 786 | # else |
575 | _GL_CXXALIAS_SYS (fwrite, size_t, | 787 | _GL_CXXALIAS_SYS (fwrite, size_t, |
576 | (const void *ptr, size_t s, size_t n, FILE *stream)); | 788 | (const void *restrict ptr, size_t s, size_t n, |
789 | FILE *restrict stream)); | ||
577 | 790 | ||
578 | /* Work around bug 11959 when fortifying glibc 2.4 through 2.15 | 791 | /* Work around bug 11959 when fortifying glibc 2.4 through 2.15 |
579 | <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>, | 792 | <https://sourceware.org/bugzilla/show_bug.cgi?id=11959>, |
580 | which sometimes causes an unwanted diagnostic for fwrite calls. | 793 | which sometimes causes an unwanted diagnostic for fwrite calls. |
581 | This affects only function declaration attributes under certain | 794 | This affects only function declaration attributes under certain |
582 | versions of gcc and clang, and is not needed for C++. */ | 795 | versions of gcc and clang, and is not needed for C++. */ |
@@ -598,7 +811,9 @@ extern size_t __REDIRECT (rpl_fwrite_unlocked, | |||
598 | # define fwrite_unlocked rpl_fwrite_unlocked | 811 | # define fwrite_unlocked rpl_fwrite_unlocked |
599 | # endif | 812 | # endif |
600 | # endif | 813 | # endif |
814 | # if __GLIBC__ >= 2 | ||
601 | _GL_CXXALIASWARN (fwrite); | 815 | _GL_CXXALIASWARN (fwrite); |
816 | # endif | ||
602 | #endif | 817 | #endif |
603 | 818 | ||
604 | #if @GNULIB_GETC@ | 819 | #if @GNULIB_GETC@ |
@@ -612,7 +827,9 @@ _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); | |||
612 | # else | 827 | # else |
613 | _GL_CXXALIAS_SYS (getc, int, (FILE *stream)); | 828 | _GL_CXXALIAS_SYS (getc, int, (FILE *stream)); |
614 | # endif | 829 | # endif |
830 | # if __GLIBC__ >= 2 | ||
615 | _GL_CXXALIASWARN (getc); | 831 | _GL_CXXALIASWARN (getc); |
832 | # endif | ||
616 | #endif | 833 | #endif |
617 | 834 | ||
618 | #if @GNULIB_GETCHAR@ | 835 | #if @GNULIB_GETCHAR@ |
@@ -626,7 +843,9 @@ _GL_CXXALIAS_RPL (getchar, int, (void)); | |||
626 | # else | 843 | # else |
627 | _GL_CXXALIAS_SYS (getchar, int, (void)); | 844 | _GL_CXXALIAS_SYS (getchar, int, (void)); |
628 | # endif | 845 | # endif |
846 | # if __GLIBC__ >= 2 | ||
629 | _GL_CXXALIASWARN (getchar); | 847 | _GL_CXXALIASWARN (getchar); |
848 | # endif | ||
630 | #endif | 849 | #endif |
631 | 850 | ||
632 | #if @GNULIB_GETDELIM@ | 851 | #if @GNULIB_GETDELIM@ |
@@ -642,22 +861,26 @@ _GL_CXXALIASWARN (getchar); | |||
642 | # define getdelim rpl_getdelim | 861 | # define getdelim rpl_getdelim |
643 | # endif | 862 | # endif |
644 | _GL_FUNCDECL_RPL (getdelim, ssize_t, | 863 | _GL_FUNCDECL_RPL (getdelim, ssize_t, |
645 | (char **lineptr, size_t *linesize, int delimiter, | 864 | (char **restrict lineptr, size_t *restrict linesize, |
646 | FILE *stream) | 865 | int delimiter, |
866 | FILE *restrict stream) | ||
647 | _GL_ARG_NONNULL ((1, 2, 4))); | 867 | _GL_ARG_NONNULL ((1, 2, 4))); |
648 | _GL_CXXALIAS_RPL (getdelim, ssize_t, | 868 | _GL_CXXALIAS_RPL (getdelim, ssize_t, |
649 | (char **lineptr, size_t *linesize, int delimiter, | 869 | (char **restrict lineptr, size_t *restrict linesize, |
650 | FILE *stream)); | 870 | int delimiter, |
871 | FILE *restrict stream)); | ||
651 | # else | 872 | # else |
652 | # if !@HAVE_DECL_GETDELIM@ | 873 | # if !@HAVE_DECL_GETDELIM@ |
653 | _GL_FUNCDECL_SYS (getdelim, ssize_t, | 874 | _GL_FUNCDECL_SYS (getdelim, ssize_t, |
654 | (char **lineptr, size_t *linesize, int delimiter, | 875 | (char **restrict lineptr, size_t *restrict linesize, |
655 | FILE *stream) | 876 | int delimiter, |
877 | FILE *restrict stream) | ||
656 | _GL_ARG_NONNULL ((1, 2, 4))); | 878 | _GL_ARG_NONNULL ((1, 2, 4))); |
657 | # endif | 879 | # endif |
658 | _GL_CXXALIAS_SYS (getdelim, ssize_t, | 880 | _GL_CXXALIAS_SYS (getdelim, ssize_t, |
659 | (char **lineptr, size_t *linesize, int delimiter, | 881 | (char **restrict lineptr, size_t *restrict linesize, |
660 | FILE *stream)); | 882 | int delimiter, |
883 | FILE *restrict stream)); | ||
661 | # endif | 884 | # endif |
662 | _GL_CXXALIASWARN (getdelim); | 885 | _GL_CXXALIASWARN (getdelim); |
663 | #elif defined GNULIB_POSIXCHECK | 886 | #elif defined GNULIB_POSIXCHECK |
@@ -681,18 +904,22 @@ _GL_WARN_ON_USE (getdelim, "getdelim is unportable - " | |||
681 | # define getline rpl_getline | 904 | # define getline rpl_getline |
682 | # endif | 905 | # endif |
683 | _GL_FUNCDECL_RPL (getline, ssize_t, | 906 | _GL_FUNCDECL_RPL (getline, ssize_t, |
684 | (char **lineptr, size_t *linesize, FILE *stream) | 907 | (char **restrict lineptr, size_t *restrict linesize, |
908 | FILE *restrict stream) | ||
685 | _GL_ARG_NONNULL ((1, 2, 3))); | 909 | _GL_ARG_NONNULL ((1, 2, 3))); |
686 | _GL_CXXALIAS_RPL (getline, ssize_t, | 910 | _GL_CXXALIAS_RPL (getline, ssize_t, |
687 | (char **lineptr, size_t *linesize, FILE *stream)); | 911 | (char **restrict lineptr, size_t *restrict linesize, |
912 | FILE *restrict stream)); | ||
688 | # else | 913 | # else |
689 | # if !@HAVE_DECL_GETLINE@ | 914 | # if !@HAVE_DECL_GETLINE@ |
690 | _GL_FUNCDECL_SYS (getline, ssize_t, | 915 | _GL_FUNCDECL_SYS (getline, ssize_t, |
691 | (char **lineptr, size_t *linesize, FILE *stream) | 916 | (char **restrict lineptr, size_t *restrict linesize, |
917 | FILE *restrict stream) | ||
692 | _GL_ARG_NONNULL ((1, 2, 3))); | 918 | _GL_ARG_NONNULL ((1, 2, 3))); |
693 | # endif | 919 | # endif |
694 | _GL_CXXALIAS_SYS (getline, ssize_t, | 920 | _GL_CXXALIAS_SYS (getline, ssize_t, |
695 | (char **lineptr, size_t *linesize, FILE *stream)); | 921 | (char **restrict lineptr, size_t *restrict linesize, |
922 | FILE *restrict stream)); | ||
696 | # endif | 923 | # endif |
697 | # if @HAVE_DECL_GETLINE@ | 924 | # if @HAVE_DECL_GETLINE@ |
698 | _GL_CXXALIASWARN (getline); | 925 | _GL_CXXALIASWARN (getline); |
@@ -709,10 +936,25 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " | |||
709 | so any use of gets warrants an unconditional warning; besides, C11 | 936 | so any use of gets warrants an unconditional warning; besides, C11 |
710 | removed it. */ | 937 | removed it. */ |
711 | #undef gets | 938 | #undef gets |
712 | #if HAVE_RAW_DECL_GETS | 939 | #if HAVE_RAW_DECL_GETS && !defined __cplusplus |
713 | _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); | 940 | _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); |
714 | #endif | 941 | #endif |
715 | 942 | ||
943 | #if @GNULIB_MDA_GETW@ | ||
944 | /* On native Windows, map 'getw' to '_getw', so that -loldnames is not | ||
945 | required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
946 | platforms by defining GNULIB_NAMESPACE::getw always. */ | ||
947 | # if defined _WIN32 && !defined __CYGWIN__ | ||
948 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
949 | # undef getw | ||
950 | # define getw _getw | ||
951 | # endif | ||
952 | _GL_CXXALIAS_MDA (getw, int, (FILE *restrict stream)); | ||
953 | # else | ||
954 | _GL_CXXALIAS_SYS (getw, int, (FILE *restrict stream)); | ||
955 | # endif | ||
956 | _GL_CXXALIASWARN (getw); | ||
957 | #endif | ||
716 | 958 | ||
717 | #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ | 959 | #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ |
718 | struct obstack; | 960 | struct obstack; |
@@ -727,7 +969,7 @@ struct obstack; | |||
727 | # endif | 969 | # endif |
728 | _GL_FUNCDECL_RPL (obstack_printf, int, | 970 | _GL_FUNCDECL_RPL (obstack_printf, int, |
729 | (struct obstack *obs, const char *format, ...) | 971 | (struct obstack *obs, const char *format, ...) |
730 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 972 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
731 | _GL_ARG_NONNULL ((1, 2))); | 973 | _GL_ARG_NONNULL ((1, 2))); |
732 | _GL_CXXALIAS_RPL (obstack_printf, int, | 974 | _GL_CXXALIAS_RPL (obstack_printf, int, |
733 | (struct obstack *obs, const char *format, ...)); | 975 | (struct obstack *obs, const char *format, ...)); |
@@ -735,7 +977,7 @@ _GL_CXXALIAS_RPL (obstack_printf, int, | |||
735 | # if !@HAVE_DECL_OBSTACK_PRINTF@ | 977 | # if !@HAVE_DECL_OBSTACK_PRINTF@ |
736 | _GL_FUNCDECL_SYS (obstack_printf, int, | 978 | _GL_FUNCDECL_SYS (obstack_printf, int, |
737 | (struct obstack *obs, const char *format, ...) | 979 | (struct obstack *obs, const char *format, ...) |
738 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 980 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
739 | _GL_ARG_NONNULL ((1, 2))); | 981 | _GL_ARG_NONNULL ((1, 2))); |
740 | # endif | 982 | # endif |
741 | _GL_CXXALIAS_SYS (obstack_printf, int, | 983 | _GL_CXXALIAS_SYS (obstack_printf, int, |
@@ -748,7 +990,7 @@ _GL_CXXALIASWARN (obstack_printf); | |||
748 | # endif | 990 | # endif |
749 | _GL_FUNCDECL_RPL (obstack_vprintf, int, | 991 | _GL_FUNCDECL_RPL (obstack_vprintf, int, |
750 | (struct obstack *obs, const char *format, va_list args) | 992 | (struct obstack *obs, const char *format, va_list args) |
751 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 993 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) |
752 | _GL_ARG_NONNULL ((1, 2))); | 994 | _GL_ARG_NONNULL ((1, 2))); |
753 | _GL_CXXALIAS_RPL (obstack_vprintf, int, | 995 | _GL_CXXALIAS_RPL (obstack_vprintf, int, |
754 | (struct obstack *obs, const char *format, va_list args)); | 996 | (struct obstack *obs, const char *format, va_list args)); |
@@ -756,7 +998,7 @@ _GL_CXXALIAS_RPL (obstack_vprintf, int, | |||
756 | # if !@HAVE_DECL_OBSTACK_PRINTF@ | 998 | # if !@HAVE_DECL_OBSTACK_PRINTF@ |
757 | _GL_FUNCDECL_SYS (obstack_vprintf, int, | 999 | _GL_FUNCDECL_SYS (obstack_vprintf, int, |
758 | (struct obstack *obs, const char *format, va_list args) | 1000 | (struct obstack *obs, const char *format, va_list args) |
759 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 1001 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) |
760 | _GL_ARG_NONNULL ((1, 2))); | 1002 | _GL_ARG_NONNULL ((1, 2))); |
761 | # endif | 1003 | # endif |
762 | _GL_CXXALIAS_SYS (obstack_vprintf, int, | 1004 | _GL_CXXALIAS_SYS (obstack_vprintf, int, |
@@ -792,7 +1034,9 @@ _GL_CXXALIAS_RPL (perror, void, (const char *string)); | |||
792 | # else | 1034 | # else |
793 | _GL_CXXALIAS_SYS (perror, void, (const char *string)); | 1035 | _GL_CXXALIAS_SYS (perror, void, (const char *string)); |
794 | # endif | 1036 | # endif |
1037 | # if __GLIBC__ >= 2 | ||
795 | _GL_CXXALIASWARN (perror); | 1038 | _GL_CXXALIASWARN (perror); |
1039 | # endif | ||
796 | #elif defined GNULIB_POSIXCHECK | 1040 | #elif defined GNULIB_POSIXCHECK |
797 | # undef perror | 1041 | # undef perror |
798 | /* Assume perror is always declared. */ | 1042 | /* Assume perror is always declared. */ |
@@ -806,43 +1050,53 @@ _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " | |||
806 | # undef popen | 1050 | # undef popen |
807 | # define popen rpl_popen | 1051 | # define popen rpl_popen |
808 | # endif | 1052 | # endif |
809 | _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) | 1053 | _GL_FUNCDECL_RPL (popen, FILE *, |
810 | _GL_ARG_NONNULL ((1, 2))); | 1054 | (const char *cmd, const char *mode) |
1055 | _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)); | ||
811 | _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); | 1056 | _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); |
812 | # else | 1057 | # else |
813 | # if !@HAVE_POPEN@ | 1058 | # if !@HAVE_POPEN@ || __GNUC__ >= 11 |
814 | _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) | 1059 | _GL_FUNCDECL_SYS (popen, FILE *, |
815 | _GL_ARG_NONNULL ((1, 2))); | 1060 | (const char *cmd, const char *mode) |
1061 | _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)); | ||
816 | # endif | 1062 | # endif |
817 | _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); | 1063 | _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); |
818 | # endif | 1064 | # endif |
819 | _GL_CXXALIASWARN (popen); | 1065 | _GL_CXXALIASWARN (popen); |
820 | #elif defined GNULIB_POSIXCHECK | 1066 | #else |
821 | # undef popen | 1067 | # if @GNULIB_PCLOSE@ && __GNUC__ >= 11 && !defined popen |
822 | # if HAVE_RAW_DECL_POPEN | 1068 | /* For -Wmismatched-dealloc: Associate popen with pclose or rpl_pclose. */ |
1069 | _GL_FUNCDECL_SYS (popen, FILE *, | ||
1070 | (const char *cmd, const char *mode) | ||
1071 | _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)); | ||
1072 | # endif | ||
1073 | # if defined GNULIB_POSIXCHECK | ||
1074 | # undef popen | ||
1075 | # if HAVE_RAW_DECL_POPEN | ||
823 | _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " | 1076 | _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " |
824 | "use gnulib module popen or pipe for more portability"); | 1077 | "use gnulib module popen or pipe for more portability"); |
1078 | # endif | ||
825 | # endif | 1079 | # endif |
826 | #endif | 1080 | #endif |
827 | 1081 | ||
828 | #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ | 1082 | #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ |
829 | # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ | 1083 | # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ |
830 | || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) | 1084 | || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) |
831 | # if defined __GNUC__ | 1085 | # if defined __GNUC__ || defined __clang__ |
832 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1086 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
833 | /* Don't break __attribute__((format(printf,M,N))). */ | 1087 | /* Don't break __attribute__((format(printf,M,N))). */ |
834 | # define printf __printf__ | 1088 | # define printf __printf__ |
835 | # endif | 1089 | # endif |
836 | # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ | 1090 | # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ |
837 | _GL_FUNCDECL_RPL_1 (__printf__, int, | 1091 | _GL_FUNCDECL_RPL_1 (__printf__, int, |
838 | (const char *format, ...) | 1092 | (const char *restrict format, ...) |
839 | __asm__ (@ASM_SYMBOL_PREFIX@ | 1093 | __asm__ (@ASM_SYMBOL_PREFIX@ |
840 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) | 1094 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) |
841 | _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) | 1095 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 2) |
842 | _GL_ARG_NONNULL ((1))); | 1096 | _GL_ARG_NONNULL ((1))); |
843 | # else | 1097 | # else |
844 | _GL_FUNCDECL_RPL_1 (__printf__, int, | 1098 | _GL_FUNCDECL_RPL_1 (__printf__, int, |
845 | (const char *format, ...) | 1099 | (const char *restrict format, ...) |
846 | __asm__ (@ASM_SYMBOL_PREFIX@ | 1100 | __asm__ (@ASM_SYMBOL_PREFIX@ |
847 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) | 1101 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) |
848 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) | 1102 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) |
@@ -854,16 +1108,18 @@ _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); | |||
854 | # define printf rpl_printf | 1108 | # define printf rpl_printf |
855 | # endif | 1109 | # endif |
856 | _GL_FUNCDECL_RPL (printf, int, | 1110 | _GL_FUNCDECL_RPL (printf, int, |
857 | (const char *format, ...) | 1111 | (const char *restrict format, ...) |
858 | _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) | 1112 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 2) |
859 | _GL_ARG_NONNULL ((1))); | 1113 | _GL_ARG_NONNULL ((1))); |
860 | _GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); | 1114 | _GL_CXXALIAS_RPL (printf, int, (const char *restrict format, ...)); |
861 | # endif | 1115 | # endif |
862 | # define GNULIB_overrides_printf 1 | 1116 | # define GNULIB_overrides_printf 1 |
863 | # else | 1117 | # else |
864 | _GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); | 1118 | _GL_CXXALIAS_SYS (printf, int, (const char *restrict format, ...)); |
865 | # endif | 1119 | # endif |
1120 | # if __GLIBC__ >= 2 | ||
866 | _GL_CXXALIASWARN (printf); | 1121 | _GL_CXXALIASWARN (printf); |
1122 | # endif | ||
867 | #endif | 1123 | #endif |
868 | #if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK | 1124 | #if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK |
869 | # if !GNULIB_overrides_printf | 1125 | # if !GNULIB_overrides_printf |
@@ -886,7 +1142,9 @@ _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); | |||
886 | # else | 1142 | # else |
887 | _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); | 1143 | _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); |
888 | # endif | 1144 | # endif |
1145 | # if __GLIBC__ >= 2 | ||
889 | _GL_CXXALIASWARN (putc); | 1146 | _GL_CXXALIASWARN (putc); |
1147 | # endif | ||
890 | #endif | 1148 | #endif |
891 | 1149 | ||
892 | #if @GNULIB_PUTCHAR@ | 1150 | #if @GNULIB_PUTCHAR@ |
@@ -900,7 +1158,9 @@ _GL_CXXALIAS_RPL (putchar, int, (int c)); | |||
900 | # else | 1158 | # else |
901 | _GL_CXXALIAS_SYS (putchar, int, (int c)); | 1159 | _GL_CXXALIAS_SYS (putchar, int, (int c)); |
902 | # endif | 1160 | # endif |
1161 | # if __GLIBC__ >= 2 | ||
903 | _GL_CXXALIASWARN (putchar); | 1162 | _GL_CXXALIASWARN (putchar); |
1163 | # endif | ||
904 | #endif | 1164 | #endif |
905 | 1165 | ||
906 | #if @GNULIB_PUTS@ | 1166 | #if @GNULIB_PUTS@ |
@@ -914,7 +1174,25 @@ _GL_CXXALIAS_RPL (puts, int, (const char *string)); | |||
914 | # else | 1174 | # else |
915 | _GL_CXXALIAS_SYS (puts, int, (const char *string)); | 1175 | _GL_CXXALIAS_SYS (puts, int, (const char *string)); |
916 | # endif | 1176 | # endif |
1177 | # if __GLIBC__ >= 2 | ||
917 | _GL_CXXALIASWARN (puts); | 1178 | _GL_CXXALIASWARN (puts); |
1179 | # endif | ||
1180 | #endif | ||
1181 | |||
1182 | #if @GNULIB_MDA_PUTW@ | ||
1183 | /* On native Windows, map 'putw' to '_putw', so that -loldnames is not | ||
1184 | required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
1185 | platforms by defining GNULIB_NAMESPACE::putw always. */ | ||
1186 | # if defined _WIN32 && !defined __CYGWIN__ | ||
1187 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
1188 | # undef putw | ||
1189 | # define putw _putw | ||
1190 | # endif | ||
1191 | _GL_CXXALIAS_MDA (putw, int, (int w, FILE *restrict stream)); | ||
1192 | # else | ||
1193 | _GL_CXXALIAS_SYS (putw, int, (int w, FILE *restrict stream)); | ||
1194 | # endif | ||
1195 | _GL_CXXALIASWARN (putw); | ||
918 | #endif | 1196 | #endif |
919 | 1197 | ||
920 | #if @GNULIB_REMOVE@ | 1198 | #if @GNULIB_REMOVE@ |
@@ -928,7 +1206,9 @@ _GL_CXXALIAS_RPL (remove, int, (const char *name)); | |||
928 | # else | 1206 | # else |
929 | _GL_CXXALIAS_SYS (remove, int, (const char *name)); | 1207 | _GL_CXXALIAS_SYS (remove, int, (const char *name)); |
930 | # endif | 1208 | # endif |
1209 | # if __GLIBC__ >= 2 | ||
931 | _GL_CXXALIASWARN (remove); | 1210 | _GL_CXXALIASWARN (remove); |
1211 | # endif | ||
932 | #elif defined GNULIB_POSIXCHECK | 1212 | #elif defined GNULIB_POSIXCHECK |
933 | # undef remove | 1213 | # undef remove |
934 | /* Assume remove is always declared. */ | 1214 | /* Assume remove is always declared. */ |
@@ -951,7 +1231,9 @@ _GL_CXXALIAS_RPL (rename, int, | |||
951 | _GL_CXXALIAS_SYS (rename, int, | 1231 | _GL_CXXALIAS_SYS (rename, int, |
952 | (const char *old_filename, const char *new_filename)); | 1232 | (const char *old_filename, const char *new_filename)); |
953 | # endif | 1233 | # endif |
1234 | # if __GLIBC__ >= 2 | ||
954 | _GL_CXXALIASWARN (rename); | 1235 | _GL_CXXALIASWARN (rename); |
1236 | # endif | ||
955 | #elif defined GNULIB_POSIXCHECK | 1237 | #elif defined GNULIB_POSIXCHECK |
956 | # undef rename | 1238 | # undef rename |
957 | /* Assume rename is always declared. */ | 1239 | /* Assume rename is always declared. */ |
@@ -990,33 +1272,35 @@ _GL_WARN_ON_USE (renameat, "renameat is not portable - " | |||
990 | 1272 | ||
991 | #if @GNULIB_SCANF@ | 1273 | #if @GNULIB_SCANF@ |
992 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | 1274 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ |
993 | # if defined __GNUC__ | 1275 | # if defined __GNUC__ || defined __clang__ |
994 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1276 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
995 | # undef scanf | 1277 | # undef scanf |
996 | /* Don't break __attribute__((format(scanf,M,N))). */ | 1278 | /* Don't break __attribute__((format(scanf,M,N))). */ |
997 | # define scanf __scanf__ | 1279 | # define scanf __scanf__ |
998 | # endif | 1280 | # endif |
999 | _GL_FUNCDECL_RPL_1 (__scanf__, int, | 1281 | _GL_FUNCDECL_RPL_1 (__scanf__, int, |
1000 | (const char *format, ...) | 1282 | (const char *restrict format, ...) |
1001 | __asm__ (@ASM_SYMBOL_PREFIX@ | 1283 | __asm__ (@ASM_SYMBOL_PREFIX@ |
1002 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) | 1284 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) |
1003 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) | 1285 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) |
1004 | _GL_ARG_NONNULL ((1))); | 1286 | _GL_ARG_NONNULL ((1))); |
1005 | _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); | 1287 | _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *restrict format, ...)); |
1006 | # else | 1288 | # else |
1007 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1289 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1008 | # undef scanf | 1290 | # undef scanf |
1009 | # define scanf rpl_scanf | 1291 | # define scanf rpl_scanf |
1010 | # endif | 1292 | # endif |
1011 | _GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) | 1293 | _GL_FUNCDECL_RPL (scanf, int, (const char *restrict format, ...) |
1012 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) | 1294 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) |
1013 | _GL_ARG_NONNULL ((1))); | 1295 | _GL_ARG_NONNULL ((1))); |
1014 | _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); | 1296 | _GL_CXXALIAS_RPL (scanf, int, (const char *restrict format, ...)); |
1015 | # endif | 1297 | # endif |
1016 | # else | 1298 | # else |
1017 | _GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); | 1299 | _GL_CXXALIAS_SYS (scanf, int, (const char *restrict format, ...)); |
1018 | # endif | 1300 | # endif |
1301 | # if __GLIBC__ >= 2 | ||
1019 | _GL_CXXALIASWARN (scanf); | 1302 | _GL_CXXALIASWARN (scanf); |
1303 | # endif | ||
1020 | #endif | 1304 | #endif |
1021 | 1305 | ||
1022 | #if @GNULIB_SNPRINTF@ | 1306 | #if @GNULIB_SNPRINTF@ |
@@ -1024,23 +1308,30 @@ _GL_CXXALIASWARN (scanf); | |||
1024 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1308 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1025 | # define snprintf rpl_snprintf | 1309 | # define snprintf rpl_snprintf |
1026 | # endif | 1310 | # endif |
1311 | # define GNULIB_overrides_snprintf 1 | ||
1027 | _GL_FUNCDECL_RPL (snprintf, int, | 1312 | _GL_FUNCDECL_RPL (snprintf, int, |
1028 | (char *str, size_t size, const char *format, ...) | 1313 | (char *restrict str, size_t size, |
1029 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) | 1314 | const char *restrict format, ...) |
1315 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 4) | ||
1030 | _GL_ARG_NONNULL ((3))); | 1316 | _GL_ARG_NONNULL ((3))); |
1031 | _GL_CXXALIAS_RPL (snprintf, int, | 1317 | _GL_CXXALIAS_RPL (snprintf, int, |
1032 | (char *str, size_t size, const char *format, ...)); | 1318 | (char *restrict str, size_t size, |
1319 | const char *restrict format, ...)); | ||
1033 | # else | 1320 | # else |
1034 | # if !@HAVE_DECL_SNPRINTF@ | 1321 | # if !@HAVE_DECL_SNPRINTF@ |
1035 | _GL_FUNCDECL_SYS (snprintf, int, | 1322 | _GL_FUNCDECL_SYS (snprintf, int, |
1036 | (char *str, size_t size, const char *format, ...) | 1323 | (char *restrict str, size_t size, |
1037 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) | 1324 | const char *restrict format, ...) |
1325 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 4) | ||
1038 | _GL_ARG_NONNULL ((3))); | 1326 | _GL_ARG_NONNULL ((3))); |
1039 | # endif | 1327 | # endif |
1040 | _GL_CXXALIAS_SYS (snprintf, int, | 1328 | _GL_CXXALIAS_SYS (snprintf, int, |
1041 | (char *str, size_t size, const char *format, ...)); | 1329 | (char *restrict str, size_t size, |
1330 | const char *restrict format, ...)); | ||
1042 | # endif | 1331 | # endif |
1332 | # if __GLIBC__ >= 2 | ||
1043 | _GL_CXXALIASWARN (snprintf); | 1333 | _GL_CXXALIASWARN (snprintf); |
1334 | # endif | ||
1044 | #elif defined GNULIB_POSIXCHECK | 1335 | #elif defined GNULIB_POSIXCHECK |
1045 | # undef snprintf | 1336 | # undef snprintf |
1046 | # if HAVE_RAW_DECL_SNPRINTF | 1337 | # if HAVE_RAW_DECL_SNPRINTF |
@@ -1063,14 +1354,20 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " | |||
1063 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1354 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1064 | # define sprintf rpl_sprintf | 1355 | # define sprintf rpl_sprintf |
1065 | # endif | 1356 | # endif |
1066 | _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) | 1357 | # define GNULIB_overrides_sprintf 1 |
1067 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 1358 | _GL_FUNCDECL_RPL (sprintf, int, |
1068 | _GL_ARG_NONNULL ((1, 2))); | 1359 | (char *restrict str, const char *restrict format, ...) |
1069 | _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); | 1360 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
1361 | _GL_ARG_NONNULL ((1, 2))); | ||
1362 | _GL_CXXALIAS_RPL (sprintf, int, | ||
1363 | (char *restrict str, const char *restrict format, ...)); | ||
1070 | # else | 1364 | # else |
1071 | _GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); | 1365 | _GL_CXXALIAS_SYS (sprintf, int, |
1366 | (char *restrict str, const char *restrict format, ...)); | ||
1072 | # endif | 1367 | # endif |
1368 | # if __GLIBC__ >= 2 | ||
1073 | _GL_CXXALIASWARN (sprintf); | 1369 | _GL_CXXALIASWARN (sprintf); |
1370 | # endif | ||
1074 | #elif defined GNULIB_POSIXCHECK | 1371 | #elif defined GNULIB_POSIXCHECK |
1075 | # undef sprintf | 1372 | # undef sprintf |
1076 | /* Assume sprintf is always declared. */ | 1373 | /* Assume sprintf is always declared. */ |
@@ -1079,22 +1376,53 @@ _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " | |||
1079 | "POSIX compliance"); | 1376 | "POSIX compliance"); |
1080 | #endif | 1377 | #endif |
1081 | 1378 | ||
1379 | #if @GNULIB_MDA_TEMPNAM@ | ||
1380 | /* On native Windows, map 'tempnam' to '_tempnam', so that -loldnames is not | ||
1381 | required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
1382 | platforms by defining GNULIB_NAMESPACE::tempnam always. */ | ||
1383 | # if defined _WIN32 && !defined __CYGWIN__ | ||
1384 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
1385 | # undef tempnam | ||
1386 | # define tempnam _tempnam | ||
1387 | # endif | ||
1388 | _GL_CXXALIAS_MDA (tempnam, char *, (const char *dir, const char *prefix)); | ||
1389 | # else | ||
1390 | _GL_CXXALIAS_SYS (tempnam, char *, (const char *dir, const char *prefix)); | ||
1391 | # endif | ||
1392 | _GL_CXXALIASWARN (tempnam); | ||
1393 | #endif | ||
1394 | |||
1082 | #if @GNULIB_TMPFILE@ | 1395 | #if @GNULIB_TMPFILE@ |
1083 | # if @REPLACE_TMPFILE@ | 1396 | # if @REPLACE_TMPFILE@ |
1084 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1397 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1085 | # define tmpfile rpl_tmpfile | 1398 | # define tmpfile rpl_tmpfile |
1086 | # endif | 1399 | # endif |
1087 | _GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); | 1400 | _GL_FUNCDECL_RPL (tmpfile, FILE *, (void) |
1401 | _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
1088 | _GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); | 1402 | _GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); |
1089 | # else | 1403 | # else |
1404 | # if __GNUC__ >= 11 | ||
1405 | /* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose. */ | ||
1406 | _GL_FUNCDECL_SYS (tmpfile, FILE *, (void) | ||
1407 | _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
1408 | # endif | ||
1090 | _GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); | 1409 | _GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); |
1091 | # endif | 1410 | # endif |
1411 | # if __GLIBC__ >= 2 | ||
1092 | _GL_CXXALIASWARN (tmpfile); | 1412 | _GL_CXXALIASWARN (tmpfile); |
1093 | #elif defined GNULIB_POSIXCHECK | 1413 | # endif |
1094 | # undef tmpfile | 1414 | #else |
1095 | # if HAVE_RAW_DECL_TMPFILE | 1415 | # if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined tmpfile |
1416 | /* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose. */ | ||
1417 | _GL_FUNCDECL_SYS (tmpfile, FILE *, (void) | ||
1418 | _GL_ATTRIBUTE_DEALLOC (fclose, 1)); | ||
1419 | # endif | ||
1420 | # if defined GNULIB_POSIXCHECK | ||
1421 | # undef tmpfile | ||
1422 | # if HAVE_RAW_DECL_TMPFILE | ||
1096 | _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " | 1423 | _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " |
1097 | "use gnulib module tmpfile for portability"); | 1424 | "use gnulib module tmpfile for portability"); |
1425 | # endif | ||
1098 | # endif | 1426 | # endif |
1099 | #endif | 1427 | #endif |
1100 | 1428 | ||
@@ -1107,9 +1435,10 @@ _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " | |||
1107 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1435 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1108 | # define asprintf rpl_asprintf | 1436 | # define asprintf rpl_asprintf |
1109 | # endif | 1437 | # endif |
1438 | # define GNULIB_overrides_asprintf | ||
1110 | _GL_FUNCDECL_RPL (asprintf, int, | 1439 | _GL_FUNCDECL_RPL (asprintf, int, |
1111 | (char **result, const char *format, ...) | 1440 | (char **result, const char *format, ...) |
1112 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 1441 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
1113 | _GL_ARG_NONNULL ((1, 2))); | 1442 | _GL_ARG_NONNULL ((1, 2))); |
1114 | _GL_CXXALIAS_RPL (asprintf, int, | 1443 | _GL_CXXALIAS_RPL (asprintf, int, |
1115 | (char **result, const char *format, ...)); | 1444 | (char **result, const char *format, ...)); |
@@ -1117,7 +1446,7 @@ _GL_CXXALIAS_RPL (asprintf, int, | |||
1117 | # if !@HAVE_VASPRINTF@ | 1446 | # if !@HAVE_VASPRINTF@ |
1118 | _GL_FUNCDECL_SYS (asprintf, int, | 1447 | _GL_FUNCDECL_SYS (asprintf, int, |
1119 | (char **result, const char *format, ...) | 1448 | (char **result, const char *format, ...) |
1120 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) | 1449 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3) |
1121 | _GL_ARG_NONNULL ((1, 2))); | 1450 | _GL_ARG_NONNULL ((1, 2))); |
1122 | # endif | 1451 | # endif |
1123 | _GL_CXXALIAS_SYS (asprintf, int, | 1452 | _GL_CXXALIAS_SYS (asprintf, int, |
@@ -1128,9 +1457,10 @@ _GL_CXXALIASWARN (asprintf); | |||
1128 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1457 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1129 | # define vasprintf rpl_vasprintf | 1458 | # define vasprintf rpl_vasprintf |
1130 | # endif | 1459 | # endif |
1460 | # define GNULIB_overrides_vasprintf 1 | ||
1131 | _GL_FUNCDECL_RPL (vasprintf, int, | 1461 | _GL_FUNCDECL_RPL (vasprintf, int, |
1132 | (char **result, const char *format, va_list args) | 1462 | (char **result, const char *format, va_list args) |
1133 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 1463 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) |
1134 | _GL_ARG_NONNULL ((1, 2))); | 1464 | _GL_ARG_NONNULL ((1, 2))); |
1135 | _GL_CXXALIAS_RPL (vasprintf, int, | 1465 | _GL_CXXALIAS_RPL (vasprintf, int, |
1136 | (char **result, const char *format, va_list args)); | 1466 | (char **result, const char *format, va_list args)); |
@@ -1138,7 +1468,7 @@ _GL_CXXALIAS_RPL (vasprintf, int, | |||
1138 | # if !@HAVE_VASPRINTF@ | 1468 | # if !@HAVE_VASPRINTF@ |
1139 | _GL_FUNCDECL_SYS (vasprintf, int, | 1469 | _GL_FUNCDECL_SYS (vasprintf, int, |
1140 | (char **result, const char *format, va_list args) | 1470 | (char **result, const char *format, va_list args) |
1141 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 1471 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) |
1142 | _GL_ARG_NONNULL ((1, 2))); | 1472 | _GL_ARG_NONNULL ((1, 2))); |
1143 | # endif | 1473 | # endif |
1144 | _GL_CXXALIAS_SYS (vasprintf, int, | 1474 | _GL_CXXALIAS_SYS (vasprintf, int, |
@@ -1152,22 +1482,27 @@ _GL_CXXALIASWARN (vasprintf); | |||
1152 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1482 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1153 | # define vdprintf rpl_vdprintf | 1483 | # define vdprintf rpl_vdprintf |
1154 | # endif | 1484 | # endif |
1155 | _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) | 1485 | _GL_FUNCDECL_RPL (vdprintf, int, |
1156 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 1486 | (int fd, const char *restrict format, va_list args) |
1157 | _GL_ARG_NONNULL ((2))); | 1487 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) |
1158 | _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); | 1488 | _GL_ARG_NONNULL ((2))); |
1489 | _GL_CXXALIAS_RPL (vdprintf, int, | ||
1490 | (int fd, const char *restrict format, va_list args)); | ||
1159 | # else | 1491 | # else |
1160 | # if !@HAVE_VDPRINTF@ | 1492 | # if !@HAVE_VDPRINTF@ |
1161 | _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) | 1493 | _GL_FUNCDECL_SYS (vdprintf, int, |
1162 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 1494 | (int fd, const char *restrict format, va_list args) |
1163 | _GL_ARG_NONNULL ((2))); | 1495 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) |
1496 | _GL_ARG_NONNULL ((2))); | ||
1164 | # endif | 1497 | # endif |
1165 | /* Need to cast, because on Solaris, the third parameter will likely be | 1498 | /* Need to cast, because on Solaris, the third parameter will likely be |
1166 | __va_list args. */ | 1499 | __va_list args. */ |
1167 | _GL_CXXALIAS_SYS_CAST (vdprintf, int, | 1500 | _GL_CXXALIAS_SYS_CAST (vdprintf, int, |
1168 | (int fd, const char *format, va_list args)); | 1501 | (int fd, const char *restrict format, va_list args)); |
1169 | # endif | 1502 | # endif |
1503 | # if __GLIBC__ >= 2 | ||
1170 | _GL_CXXALIASWARN (vdprintf); | 1504 | _GL_CXXALIASWARN (vdprintf); |
1505 | # endif | ||
1171 | #elif defined GNULIB_POSIXCHECK | 1506 | #elif defined GNULIB_POSIXCHECK |
1172 | # undef vdprintf | 1507 | # undef vdprintf |
1173 | # if HAVE_RAW_DECL_VDPRINTF | 1508 | # if HAVE_RAW_DECL_VDPRINTF |
@@ -1184,23 +1519,32 @@ _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " | |||
1184 | # endif | 1519 | # endif |
1185 | # define GNULIB_overrides_vfprintf 1 | 1520 | # define GNULIB_overrides_vfprintf 1 |
1186 | # if @GNULIB_VFPRINTF_POSIX@ | 1521 | # if @GNULIB_VFPRINTF_POSIX@ |
1187 | _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) | 1522 | _GL_FUNCDECL_RPL (vfprintf, int, |
1188 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 1523 | (FILE *restrict fp, |
1189 | _GL_ARG_NONNULL ((1, 2))); | 1524 | const char *restrict format, va_list args) |
1525 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) | ||
1526 | _GL_ARG_NONNULL ((1, 2))); | ||
1190 | # else | 1527 | # else |
1191 | _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) | 1528 | _GL_FUNCDECL_RPL (vfprintf, int, |
1192 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) | 1529 | (FILE *restrict fp, |
1193 | _GL_ARG_NONNULL ((1, 2))); | 1530 | const char *restrict format, va_list args) |
1531 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) | ||
1532 | _GL_ARG_NONNULL ((1, 2))); | ||
1194 | # endif | 1533 | # endif |
1195 | _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); | 1534 | _GL_CXXALIAS_RPL (vfprintf, int, |
1535 | (FILE *restrict fp, | ||
1536 | const char *restrict format, va_list args)); | ||
1196 | # else | 1537 | # else |
1197 | /* Need to cast, because on Solaris, the third parameter is | 1538 | /* Need to cast, because on Solaris, the third parameter is |
1198 | __va_list args | 1539 | __va_list args |
1199 | and GCC's fixincludes did not change this to __gnuc_va_list. */ | 1540 | and GCC's fixincludes did not change this to __gnuc_va_list. */ |
1200 | _GL_CXXALIAS_SYS_CAST (vfprintf, int, | 1541 | _GL_CXXALIAS_SYS_CAST (vfprintf, int, |
1201 | (FILE *fp, const char *format, va_list args)); | 1542 | (FILE *restrict fp, |
1543 | const char *restrict format, va_list args)); | ||
1202 | # endif | 1544 | # endif |
1545 | # if __GLIBC__ >= 2 | ||
1203 | _GL_CXXALIASWARN (vfprintf); | 1546 | _GL_CXXALIASWARN (vfprintf); |
1547 | # endif | ||
1204 | #endif | 1548 | #endif |
1205 | #if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK | 1549 | #if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK |
1206 | # if !GNULIB_overrides_vfprintf | 1550 | # if !GNULIB_overrides_vfprintf |
@@ -1219,16 +1563,21 @@ _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " | |||
1219 | # define vfscanf rpl_vfscanf | 1563 | # define vfscanf rpl_vfscanf |
1220 | # endif | 1564 | # endif |
1221 | _GL_FUNCDECL_RPL (vfscanf, int, | 1565 | _GL_FUNCDECL_RPL (vfscanf, int, |
1222 | (FILE *stream, const char *format, va_list args) | 1566 | (FILE *restrict stream, |
1567 | const char *restrict format, va_list args) | ||
1223 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) | 1568 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) |
1224 | _GL_ARG_NONNULL ((1, 2))); | 1569 | _GL_ARG_NONNULL ((1, 2))); |
1225 | _GL_CXXALIAS_RPL (vfscanf, int, | 1570 | _GL_CXXALIAS_RPL (vfscanf, int, |
1226 | (FILE *stream, const char *format, va_list args)); | 1571 | (FILE *restrict stream, |
1572 | const char *restrict format, va_list args)); | ||
1227 | # else | 1573 | # else |
1228 | _GL_CXXALIAS_SYS (vfscanf, int, | 1574 | _GL_CXXALIAS_SYS (vfscanf, int, |
1229 | (FILE *stream, const char *format, va_list args)); | 1575 | (FILE *restrict stream, |
1576 | const char *restrict format, va_list args)); | ||
1230 | # endif | 1577 | # endif |
1578 | # if __GLIBC__ >= 2 | ||
1231 | _GL_CXXALIASWARN (vfscanf); | 1579 | _GL_CXXALIASWARN (vfscanf); |
1580 | # endif | ||
1232 | #endif | 1581 | #endif |
1233 | 1582 | ||
1234 | #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ | 1583 | #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ |
@@ -1239,22 +1588,25 @@ _GL_CXXALIASWARN (vfscanf); | |||
1239 | # endif | 1588 | # endif |
1240 | # define GNULIB_overrides_vprintf 1 | 1589 | # define GNULIB_overrides_vprintf 1 |
1241 | # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ | 1590 | # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ |
1242 | _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) | 1591 | _GL_FUNCDECL_RPL (vprintf, int, (const char *restrict format, va_list args) |
1243 | _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) | 1592 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (1, 0) |
1244 | _GL_ARG_NONNULL ((1))); | 1593 | _GL_ARG_NONNULL ((1))); |
1245 | # else | 1594 | # else |
1246 | _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) | 1595 | _GL_FUNCDECL_RPL (vprintf, int, (const char *restrict format, va_list args) |
1247 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) | 1596 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) |
1248 | _GL_ARG_NONNULL ((1))); | 1597 | _GL_ARG_NONNULL ((1))); |
1249 | # endif | 1598 | # endif |
1250 | _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); | 1599 | _GL_CXXALIAS_RPL (vprintf, int, (const char *restrict format, va_list args)); |
1251 | # else | 1600 | # else |
1252 | /* Need to cast, because on Solaris, the second parameter is | 1601 | /* Need to cast, because on Solaris, the second parameter is |
1253 | __va_list args | 1602 | __va_list args |
1254 | and GCC's fixincludes did not change this to __gnuc_va_list. */ | 1603 | and GCC's fixincludes did not change this to __gnuc_va_list. */ |
1255 | _GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); | 1604 | _GL_CXXALIAS_SYS_CAST (vprintf, int, |
1605 | (const char *restrict format, va_list args)); | ||
1256 | # endif | 1606 | # endif |
1607 | # if __GLIBC__ >= 2 | ||
1257 | _GL_CXXALIASWARN (vprintf); | 1608 | _GL_CXXALIASWARN (vprintf); |
1609 | # endif | ||
1258 | #endif | 1610 | #endif |
1259 | #if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK | 1611 | #if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK |
1260 | # if !GNULIB_overrides_vprintf | 1612 | # if !GNULIB_overrides_vprintf |
@@ -1272,14 +1624,16 @@ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " | |||
1272 | # undef vscanf | 1624 | # undef vscanf |
1273 | # define vscanf rpl_vscanf | 1625 | # define vscanf rpl_vscanf |
1274 | # endif | 1626 | # endif |
1275 | _GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) | 1627 | _GL_FUNCDECL_RPL (vscanf, int, (const char *restrict format, va_list args) |
1276 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) | 1628 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) |
1277 | _GL_ARG_NONNULL ((1))); | 1629 | _GL_ARG_NONNULL ((1))); |
1278 | _GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); | 1630 | _GL_CXXALIAS_RPL (vscanf, int, (const char *restrict format, va_list args)); |
1279 | # else | 1631 | # else |
1280 | _GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); | 1632 | _GL_CXXALIAS_SYS (vscanf, int, (const char *restrict format, va_list args)); |
1281 | # endif | 1633 | # endif |
1634 | # if __GLIBC__ >= 2 | ||
1282 | _GL_CXXALIASWARN (vscanf); | 1635 | _GL_CXXALIASWARN (vscanf); |
1636 | # endif | ||
1283 | #endif | 1637 | #endif |
1284 | 1638 | ||
1285 | #if @GNULIB_VSNPRINTF@ | 1639 | #if @GNULIB_VSNPRINTF@ |
@@ -1287,23 +1641,30 @@ _GL_CXXALIASWARN (vscanf); | |||
1287 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1641 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1288 | # define vsnprintf rpl_vsnprintf | 1642 | # define vsnprintf rpl_vsnprintf |
1289 | # endif | 1643 | # endif |
1644 | # define GNULIB_overrides_vsnprintf 1 | ||
1290 | _GL_FUNCDECL_RPL (vsnprintf, int, | 1645 | _GL_FUNCDECL_RPL (vsnprintf, int, |
1291 | (char *str, size_t size, const char *format, va_list args) | 1646 | (char *restrict str, size_t size, |
1292 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) | 1647 | const char *restrict format, va_list args) |
1648 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0) | ||
1293 | _GL_ARG_NONNULL ((3))); | 1649 | _GL_ARG_NONNULL ((3))); |
1294 | _GL_CXXALIAS_RPL (vsnprintf, int, | 1650 | _GL_CXXALIAS_RPL (vsnprintf, int, |
1295 | (char *str, size_t size, const char *format, va_list args)); | 1651 | (char *restrict str, size_t size, |
1652 | const char *restrict format, va_list args)); | ||
1296 | # else | 1653 | # else |
1297 | # if !@HAVE_DECL_VSNPRINTF@ | 1654 | # if !@HAVE_DECL_VSNPRINTF@ |
1298 | _GL_FUNCDECL_SYS (vsnprintf, int, | 1655 | _GL_FUNCDECL_SYS (vsnprintf, int, |
1299 | (char *str, size_t size, const char *format, va_list args) | 1656 | (char *restrict str, size_t size, |
1300 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) | 1657 | const char *restrict format, va_list args) |
1658 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0) | ||
1301 | _GL_ARG_NONNULL ((3))); | 1659 | _GL_ARG_NONNULL ((3))); |
1302 | # endif | 1660 | # endif |
1303 | _GL_CXXALIAS_SYS (vsnprintf, int, | 1661 | _GL_CXXALIAS_SYS (vsnprintf, int, |
1304 | (char *str, size_t size, const char *format, va_list args)); | 1662 | (char *restrict str, size_t size, |
1663 | const char *restrict format, va_list args)); | ||
1305 | # endif | 1664 | # endif |
1665 | # if __GLIBC__ >= 2 | ||
1306 | _GL_CXXALIASWARN (vsnprintf); | 1666 | _GL_CXXALIASWARN (vsnprintf); |
1667 | # endif | ||
1307 | #elif defined GNULIB_POSIXCHECK | 1668 | #elif defined GNULIB_POSIXCHECK |
1308 | # undef vsnprintf | 1669 | # undef vsnprintf |
1309 | # if HAVE_RAW_DECL_VSNPRINTF | 1670 | # if HAVE_RAW_DECL_VSNPRINTF |
@@ -1317,20 +1678,26 @@ _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " | |||
1317 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1678 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
1318 | # define vsprintf rpl_vsprintf | 1679 | # define vsprintf rpl_vsprintf |
1319 | # endif | 1680 | # endif |
1681 | # define GNULIB_overrides_vsprintf 1 | ||
1320 | _GL_FUNCDECL_RPL (vsprintf, int, | 1682 | _GL_FUNCDECL_RPL (vsprintf, int, |
1321 | (char *str, const char *format, va_list args) | 1683 | (char *restrict str, |
1322 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | 1684 | const char *restrict format, va_list args) |
1685 | _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0) | ||
1323 | _GL_ARG_NONNULL ((1, 2))); | 1686 | _GL_ARG_NONNULL ((1, 2))); |
1324 | _GL_CXXALIAS_RPL (vsprintf, int, | 1687 | _GL_CXXALIAS_RPL (vsprintf, int, |
1325 | (char *str, const char *format, va_list args)); | 1688 | (char *restrict str, |
1689 | const char *restrict format, va_list args)); | ||
1326 | # else | 1690 | # else |
1327 | /* Need to cast, because on Solaris, the third parameter is | 1691 | /* Need to cast, because on Solaris, the third parameter is |
1328 | __va_list args | 1692 | __va_list args |
1329 | and GCC's fixincludes did not change this to __gnuc_va_list. */ | 1693 | and GCC's fixincludes did not change this to __gnuc_va_list. */ |
1330 | _GL_CXXALIAS_SYS_CAST (vsprintf, int, | 1694 | _GL_CXXALIAS_SYS_CAST (vsprintf, int, |
1331 | (char *str, const char *format, va_list args)); | 1695 | (char *restrict str, |
1696 | const char *restrict format, va_list args)); | ||
1332 | # endif | 1697 | # endif |
1698 | # if __GLIBC__ >= 2 | ||
1333 | _GL_CXXALIASWARN (vsprintf); | 1699 | _GL_CXXALIASWARN (vsprintf); |
1700 | # endif | ||
1334 | #elif defined GNULIB_POSIXCHECK | 1701 | #elif defined GNULIB_POSIXCHECK |
1335 | # undef vsprintf | 1702 | # undef vsprintf |
1336 | /* Assume vsprintf is always declared. */ | 1703 | /* Assume vsprintf is always declared. */ |