diff options
Diffstat (limited to 'gl/stdio.in.h')
| -rw-r--r-- | gl/stdio.in.h | 461 |
1 files changed, 367 insertions, 94 deletions
diff --git a/gl/stdio.in.h b/gl/stdio.in.h index 80b9dbfd..06cbad00 100644 --- a/gl/stdio.in.h +++ b/gl/stdio.in.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* A GNU-like <stdio.h>. | 1 | /* A GNU-like <stdio.h>. |
| 2 | 2 | ||
| 3 | Copyright (C) 2004, 2007-2010 Free Software Foundation, Inc. | 3 | Copyright (C) 2004, 2007-2013 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | This program is free software; you can redistribute it and/or modify | 5 | This program 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 General Public License as published by |
| @@ -13,47 +13,104 @@ | |||
| 13 | GNU General Public License for more details. | 13 | GNU 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 General Public License |
| 16 | along with this program; if not, write to the Free Software Foundation, | 16 | along with this program; if not, see <http://www.gnu.org/licenses/>. */ |
| 17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
| 18 | 17 | ||
| 19 | #if __GNUC__ >= 3 | 18 | #if __GNUC__ >= 3 |
| 20 | @PRAGMA_SYSTEM_HEADER@ | 19 | @PRAGMA_SYSTEM_HEADER@ |
| 21 | #endif | 20 | #endif |
| 21 | @PRAGMA_COLUMNS@ | ||
| 22 | 22 | ||
| 23 | #if defined __need_FILE || defined __need___FILE | 23 | #if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H |
| 24 | /* Special invocation convention inside glibc header files. */ | 24 | /* Special invocation convention: |
| 25 | - Inside glibc header files. | ||
| 26 | - On OSF/1 5.1 we have a sequence of nested includes | ||
| 27 | <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> -> | ||
| 28 | <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>. | ||
| 29 | In this situation, the functions are not yet declared, therefore we cannot | ||
| 30 | provide the C++ aliases. */ | ||
| 25 | 31 | ||
| 26 | #@INCLUDE_NEXT@ @NEXT_STDIO_H@ | 32 | #@INCLUDE_NEXT@ @NEXT_STDIO_H@ |
| 27 | 33 | ||
| 28 | #else | 34 | #else |
| 29 | /* Normal invocation convention. */ | 35 | /* Normal invocation convention. */ |
| 30 | 36 | ||
| 31 | #ifndef _GL_STDIO_H | 37 | #ifndef _@GUARD_PREFIX@_STDIO_H |
| 38 | |||
| 39 | #define _GL_ALREADY_INCLUDING_STDIO_H | ||
| 32 | 40 | ||
| 33 | /* The include_next requires a split double-inclusion guard. */ | 41 | /* The include_next requires a split double-inclusion guard. */ |
| 34 | #@INCLUDE_NEXT@ @NEXT_STDIO_H@ | 42 | #@INCLUDE_NEXT@ @NEXT_STDIO_H@ |
| 35 | 43 | ||
| 36 | #ifndef _GL_STDIO_H | 44 | #undef _GL_ALREADY_INCLUDING_STDIO_H |
| 37 | #define _GL_STDIO_H | 45 | |
| 46 | #ifndef _@GUARD_PREFIX@_STDIO_H | ||
| 47 | #define _@GUARD_PREFIX@_STDIO_H | ||
| 38 | 48 | ||
| 39 | /* Get va_list. Needed on many systems, including glibc 2.8. */ | 49 | /* Get va_list. Needed on many systems, including glibc 2.8. */ |
| 40 | #include <stdarg.h> | 50 | #include <stdarg.h> |
| 41 | 51 | ||
| 42 | #include <stddef.h> | 52 | #include <stddef.h> |
| 43 | 53 | ||
| 44 | /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8. */ | 54 | /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 |
| 55 | and eglibc 2.11.2. | ||
| 56 | May also define off_t to a 64-bit type on native Windows. */ | ||
| 45 | #include <sys/types.h> | 57 | #include <sys/types.h> |
| 46 | 58 | ||
| 47 | #ifndef __attribute__ | ||
| 48 | /* The __attribute__ feature is available in gcc versions 2.5 and later. | 59 | /* The __attribute__ feature is available in gcc versions 2.5 and later. |
| 49 | The __-protected variants of the attributes 'format' and 'printf' are | 60 | The __-protected variants of the attributes 'format' and 'printf' are |
| 50 | accepted by gcc versions 2.6.4 (effectively 2.7) and later. | 61 | accepted by gcc versions 2.6.4 (effectively 2.7) and later. |
| 51 | We enable __attribute__ only if these are supported too, because | 62 | We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because |
| 52 | gnulib and libintl do '#define printf __printf__' when they override | 63 | gnulib and libintl do '#define printf __printf__' when they override |
| 53 | the 'printf' function. */ | 64 | the 'printf' function. */ |
| 54 | # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) | 65 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) |
| 55 | # define __attribute__(Spec) /* empty */ | 66 | # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) |
| 56 | # endif | 67 | #else |
| 68 | # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ | ||
| 69 | #endif | ||
| 70 | |||
| 71 | /* _GL_ATTRIBUTE_FORMAT_PRINTF | ||
| 72 | 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 | ||
| 74 | and POSIX. */ | ||
| 75 | #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) | ||
| 76 | # define _GL_ATTRIBUTE_FORMAT_PRINTF(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 | |||
| 83 | /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, | ||
| 84 | 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 | ||
| 86 | ISO C99 and POSIX. */ | ||
| 87 | #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ | ||
| 88 | _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) | ||
| 89 | |||
| 90 | /* _GL_ATTRIBUTE_FORMAT_SCANF | ||
| 91 | indicates to GCC that the function takes a format string and arguments, | ||
| 92 | where the format string directives are the ones standardized by ISO C99 | ||
| 93 | and POSIX. */ | ||
| 94 | #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) | ||
| 95 | # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ | ||
| 96 | _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) | ||
| 97 | #else | ||
| 98 | # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ | ||
| 99 | _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) | ||
| 100 | #endif | ||
| 101 | |||
| 102 | /* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, | ||
| 103 | except that it indicates to GCC that the supported format string directives | ||
| 104 | are the ones of the system scanf(), rather than the ones standardized by | ||
| 105 | ISO C99 and POSIX. */ | ||
| 106 | #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ | ||
| 107 | _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) | ||
| 108 | |||
| 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> | ||
| 57 | #endif | 114 | #endif |
| 58 | 115 | ||
| 59 | 116 | ||
| @@ -74,13 +131,13 @@ | |||
| 74 | # define dprintf rpl_dprintf | 131 | # define dprintf rpl_dprintf |
| 75 | # endif | 132 | # endif |
| 76 | _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) | 133 | _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) |
| 77 | __attribute__ ((__format__ (__printf__, 2, 3))) | 134 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 78 | _GL_ARG_NONNULL ((2))); | 135 | _GL_ARG_NONNULL ((2))); |
| 79 | _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); | 136 | _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); |
| 80 | # else | 137 | # else |
| 81 | # if !@HAVE_DPRINTF@ | 138 | # if !@HAVE_DPRINTF@ |
| 82 | _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) | 139 | _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) |
| 83 | __attribute__ ((__format__ (__printf__, 2, 3))) | 140 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 84 | _GL_ARG_NONNULL ((2))); | 141 | _GL_ARG_NONNULL ((2))); |
| 85 | # endif | 142 | # endif |
| 86 | _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); | 143 | _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); |
| @@ -113,6 +170,26 @@ _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " | |||
| 113 | "use gnulib module fclose for portable POSIX compliance"); | 170 | "use gnulib module fclose for portable POSIX compliance"); |
| 114 | #endif | 171 | #endif |
| 115 | 172 | ||
| 173 | #if @GNULIB_FDOPEN@ | ||
| 174 | # if @REPLACE_FDOPEN@ | ||
| 175 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 176 | # undef fdopen | ||
| 177 | # define fdopen rpl_fdopen | ||
| 178 | # endif | ||
| 179 | _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) | ||
| 180 | _GL_ARG_NONNULL ((2))); | ||
| 181 | _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); | ||
| 182 | # else | ||
| 183 | _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); | ||
| 184 | # endif | ||
| 185 | _GL_CXXALIASWARN (fdopen); | ||
| 186 | #elif defined GNULIB_POSIXCHECK | ||
| 187 | # undef fdopen | ||
| 188 | /* Assume fdopen is always declared. */ | ||
| 189 | _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " | ||
| 190 | "use gnulib module fdopen for portability"); | ||
| 191 | #endif | ||
| 192 | |||
| 116 | #if @GNULIB_FFLUSH@ | 193 | #if @GNULIB_FFLUSH@ |
| 117 | /* Flush all pending data on STREAM according to POSIX rules. Both | 194 | /* Flush all pending data on STREAM according to POSIX rules. Both |
| 118 | output and seekable input streams are supported. | 195 | output and seekable input streams are supported. |
| @@ -137,11 +214,34 @@ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " | |||
| 137 | "use gnulib module fflush for portable POSIX compliance"); | 214 | "use gnulib module fflush for portable POSIX compliance"); |
| 138 | #endif | 215 | #endif |
| 139 | 216 | ||
| 140 | /* It is very rare that the developer ever has full control of stdin, | 217 | #if @GNULIB_FGETC@ |
| 141 | so any use of gets warrants an unconditional warning. Assume it is | 218 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ |
| 142 | always declared, since it is required by C89. */ | 219 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 143 | #undef gets | 220 | # undef fgetc |
| 144 | _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); | 221 | # define fgetc rpl_fgetc |
| 222 | # endif | ||
| 223 | _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); | ||
| 224 | _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); | ||
| 225 | # else | ||
| 226 | _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); | ||
| 227 | # endif | ||
| 228 | _GL_CXXALIASWARN (fgetc); | ||
| 229 | #endif | ||
| 230 | |||
| 231 | #if @GNULIB_FGETS@ | ||
| 232 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 233 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 234 | # undef fgets | ||
| 235 | # define fgets rpl_fgets | ||
| 236 | # endif | ||
| 237 | _GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) | ||
| 238 | _GL_ARG_NONNULL ((1, 3))); | ||
| 239 | _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); | ||
| 240 | # else | ||
| 241 | _GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); | ||
| 242 | # endif | ||
| 243 | _GL_CXXALIASWARN (fgets); | ||
| 244 | #endif | ||
| 145 | 245 | ||
| 146 | #if @GNULIB_FOPEN@ | 246 | #if @GNULIB_FOPEN@ |
| 147 | # if @REPLACE_FOPEN@ | 247 | # if @REPLACE_FOPEN@ |
| @@ -159,20 +259,26 @@ _GL_CXXALIASWARN (fopen); | |||
| 159 | #elif defined GNULIB_POSIXCHECK | 259 | #elif defined GNULIB_POSIXCHECK |
| 160 | # undef fopen | 260 | # undef fopen |
| 161 | /* Assume fopen is always declared. */ | 261 | /* Assume fopen is always declared. */ |
| 162 | _GL_WARN_ON_USE (fopen, "fopen on Win32 platforms is not POSIX compatible - " | 262 | _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " |
| 163 | "use gnulib module fopen for portability"); | 263 | "use gnulib module fopen for portability"); |
| 164 | #endif | 264 | #endif |
| 165 | 265 | ||
| 166 | #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ | 266 | #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ |
| 167 | # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \ | 267 | # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \ |
| 168 | || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@) | 268 | || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) |
| 169 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 269 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 170 | # define fprintf rpl_fprintf | 270 | # define fprintf rpl_fprintf |
| 171 | # endif | 271 | # endif |
| 172 | # define GNULIB_overrides_fprintf 1 | 272 | # define GNULIB_overrides_fprintf 1 |
| 273 | # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ | ||
| 173 | _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) | 274 | _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) |
| 174 | __attribute__ ((__format__ (__printf__, 2, 3))) | 275 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 175 | _GL_ARG_NONNULL ((1, 2))); | 276 | _GL_ARG_NONNULL ((1, 2))); |
| 277 | # else | ||
| 278 | _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) | ||
| 279 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) | ||
| 280 | _GL_ARG_NONNULL ((1, 2))); | ||
| 281 | # endif | ||
| 176 | _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); | 282 | _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); |
| 177 | # else | 283 | # else |
| 178 | _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); | 284 | _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); |
| @@ -218,7 +324,7 @@ _GL_WARN_ON_USE (fpurge, "fpurge is not always present - " | |||
| 218 | #endif | 324 | #endif |
| 219 | 325 | ||
| 220 | #if @GNULIB_FPUTC@ | 326 | #if @GNULIB_FPUTC@ |
| 221 | # if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | 327 | # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) |
| 222 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 328 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 223 | # undef fputc | 329 | # undef fputc |
| 224 | # define fputc rpl_fputc | 330 | # define fputc rpl_fputc |
| @@ -232,7 +338,7 @@ _GL_CXXALIASWARN (fputc); | |||
| 232 | #endif | 338 | #endif |
| 233 | 339 | ||
| 234 | #if @GNULIB_FPUTS@ | 340 | #if @GNULIB_FPUTS@ |
| 235 | # if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | 341 | # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) |
| 236 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 342 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 237 | # undef fputs | 343 | # undef fputs |
| 238 | # define fputs rpl_fputs | 344 | # define fputs rpl_fputs |
| @@ -246,6 +352,21 @@ _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); | |||
| 246 | _GL_CXXALIASWARN (fputs); | 352 | _GL_CXXALIASWARN (fputs); |
| 247 | #endif | 353 | #endif |
| 248 | 354 | ||
| 355 | #if @GNULIB_FREAD@ | ||
| 356 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 357 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 358 | # undef fread | ||
| 359 | # define fread rpl_fread | ||
| 360 | # endif | ||
| 361 | _GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) | ||
| 362 | _GL_ARG_NONNULL ((4))); | ||
| 363 | _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); | ||
| 364 | # else | ||
| 365 | _GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); | ||
| 366 | # endif | ||
| 367 | _GL_CXXALIASWARN (fread); | ||
| 368 | #endif | ||
| 369 | |||
| 249 | #if @GNULIB_FREOPEN@ | 370 | #if @GNULIB_FREOPEN@ |
| 250 | # if @REPLACE_FREOPEN@ | 371 | # if @REPLACE_FREOPEN@ |
| 251 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 372 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| @@ -265,10 +386,27 @@ _GL_CXXALIASWARN (freopen); | |||
| 265 | #elif defined GNULIB_POSIXCHECK | 386 | #elif defined GNULIB_POSIXCHECK |
| 266 | # undef freopen | 387 | # undef freopen |
| 267 | /* Assume freopen is always declared. */ | 388 | /* Assume freopen is always declared. */ |
| 268 | _GL_WARN_ON_USE (freopen, "freopen on Win32 platforms is not POSIX compatible - " | 389 | _GL_WARN_ON_USE (freopen, |
| 390 | "freopen on native Windows platforms is not POSIX compliant - " | ||
| 269 | "use gnulib module freopen for portability"); | 391 | "use gnulib module freopen for portability"); |
| 270 | #endif | 392 | #endif |
| 271 | 393 | ||
| 394 | #if @GNULIB_FSCANF@ | ||
| 395 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 396 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 397 | # undef fscanf | ||
| 398 | # define fscanf rpl_fscanf | ||
| 399 | # endif | ||
| 400 | _GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) | ||
| 401 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) | ||
| 402 | _GL_ARG_NONNULL ((1, 2))); | ||
| 403 | _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); | ||
| 404 | # else | ||
| 405 | _GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); | ||
| 406 | # endif | ||
| 407 | _GL_CXXALIASWARN (fscanf); | ||
| 408 | #endif | ||
| 409 | |||
| 272 | 410 | ||
| 273 | /* Set up the following warnings, based on which modules are in use. | 411 | /* Set up the following warnings, based on which modules are in use. |
| 274 | GNU Coding Standards discourage the use of fseek, since it imposes | 412 | GNU Coding Standards discourage the use of fseek, since it imposes |
| @@ -336,29 +474,13 @@ _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) | |||
| 336 | _GL_ARG_NONNULL ((1))); | 474 | _GL_ARG_NONNULL ((1))); |
| 337 | _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); | 475 | _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); |
| 338 | # else | 476 | # else |
| 339 | # if ! @HAVE_FSEEKO@ | 477 | # if ! @HAVE_DECL_FSEEKO@ |
| 340 | _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) | 478 | _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) |
| 341 | _GL_ARG_NONNULL ((1))); | 479 | _GL_ARG_NONNULL ((1))); |
| 342 | # endif | 480 | # endif |
| 343 | _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); | 481 | _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); |
| 344 | # endif | 482 | # endif |
| 345 | _GL_CXXALIASWARN (fseeko); | 483 | _GL_CXXALIASWARN (fseeko); |
| 346 | # if (@REPLACE_FSEEKO@ || !@HAVE_FSEEKO@) && !@GNULIB_FSEEK@ | ||
| 347 | /* Provide an fseek function that is consistent with fseeko. */ | ||
| 348 | /* In order to avoid that fseek gets defined as a macro here, the | ||
| 349 | developer can request the 'fseek' module. */ | ||
| 350 | # undef fseek | ||
| 351 | # define fseek rpl_fseek | ||
| 352 | static inline int _GL_ARG_NONNULL ((1)) | ||
| 353 | rpl_fseek (FILE *fp, long offset, int whence) | ||
| 354 | { | ||
| 355 | # if @REPLACE_FSEEKO@ | ||
| 356 | return rpl_fseeko (fp, offset, whence); | ||
| 357 | # else | ||
| 358 | return fseeko (fp, offset, whence); | ||
| 359 | # endif | ||
| 360 | } | ||
| 361 | # endif | ||
| 362 | #elif defined GNULIB_POSIXCHECK | 484 | #elif defined GNULIB_POSIXCHECK |
| 363 | # define _GL_FSEEK_WARN /* Category 1, above. */ | 485 | # define _GL_FSEEK_WARN /* Category 1, above. */ |
| 364 | # undef fseek | 486 | # undef fseek |
| @@ -412,28 +534,12 @@ _GL_CXXALIASWARN (ftell); | |||
| 412 | _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); | 534 | _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); |
| 413 | _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); | 535 | _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); |
| 414 | # else | 536 | # else |
| 415 | # if ! @HAVE_FTELLO@ | 537 | # if ! @HAVE_DECL_FTELLO@ |
| 416 | _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); | 538 | _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); |
| 417 | # endif | 539 | # endif |
| 418 | _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); | 540 | _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); |
| 419 | # endif | 541 | # endif |
| 420 | _GL_CXXALIASWARN (ftello); | 542 | _GL_CXXALIASWARN (ftello); |
| 421 | # if (@REPLACE_FTELLO@ || !@HAVE_FTELLO@) && !@GNULIB_FTELL@ | ||
| 422 | /* Provide an ftell function that is consistent with ftello. */ | ||
| 423 | /* In order to avoid that ftell gets defined as a macro here, the | ||
| 424 | developer can request the 'ftell' module. */ | ||
| 425 | # undef ftell | ||
| 426 | # define ftell rpl_ftell | ||
| 427 | static inline long _GL_ARG_NONNULL ((1)) | ||
| 428 | rpl_ftell (FILE *f) | ||
| 429 | { | ||
| 430 | # if @REPLACE_FTELLO@ | ||
| 431 | return rpl_ftello (f); | ||
| 432 | # else | ||
| 433 | return ftello (f); | ||
| 434 | # endif | ||
| 435 | } | ||
| 436 | # endif | ||
| 437 | #elif defined GNULIB_POSIXCHECK | 543 | #elif defined GNULIB_POSIXCHECK |
| 438 | # define _GL_FTELL_WARN /* Category 1, above. */ | 544 | # define _GL_FTELL_WARN /* Category 1, above. */ |
| 439 | # undef ftell | 545 | # undef ftell |
| @@ -455,7 +561,7 @@ _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " | |||
| 455 | 561 | ||
| 456 | 562 | ||
| 457 | #if @GNULIB_FWRITE@ | 563 | #if @GNULIB_FWRITE@ |
| 458 | # if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | 564 | # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) |
| 459 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 565 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 460 | # undef fwrite | 566 | # undef fwrite |
| 461 | # define fwrite rpl_fwrite | 567 | # define fwrite rpl_fwrite |
| @@ -468,10 +574,61 @@ _GL_CXXALIAS_RPL (fwrite, size_t, | |||
| 468 | # else | 574 | # else |
| 469 | _GL_CXXALIAS_SYS (fwrite, size_t, | 575 | _GL_CXXALIAS_SYS (fwrite, size_t, |
| 470 | (const void *ptr, size_t s, size_t n, FILE *stream)); | 576 | (const void *ptr, size_t s, size_t n, FILE *stream)); |
| 577 | |||
| 578 | /* Work around bug 11959 when fortifying glibc 2.4 through 2.15 | ||
| 579 | <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>, | ||
| 580 | which sometimes causes an unwanted diagnostic for fwrite calls. | ||
| 581 | This affects only function declaration attributes under certain | ||
| 582 | versions of gcc and clang, and is not needed for C++. */ | ||
| 583 | # if (0 < __USE_FORTIFY_LEVEL \ | ||
| 584 | && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ | ||
| 585 | && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ | ||
| 586 | && !defined __cplusplus) | ||
| 587 | # undef fwrite | ||
| 588 | # undef fwrite_unlocked | ||
| 589 | extern size_t __REDIRECT (rpl_fwrite, | ||
| 590 | (const void *__restrict, size_t, size_t, | ||
| 591 | FILE *__restrict), | ||
| 592 | fwrite); | ||
| 593 | extern size_t __REDIRECT (rpl_fwrite_unlocked, | ||
| 594 | (const void *__restrict, size_t, size_t, | ||
| 595 | FILE *__restrict), | ||
| 596 | fwrite_unlocked); | ||
| 597 | # define fwrite rpl_fwrite | ||
| 598 | # define fwrite_unlocked rpl_fwrite_unlocked | ||
| 599 | # endif | ||
| 471 | # endif | 600 | # endif |
| 472 | _GL_CXXALIASWARN (fwrite); | 601 | _GL_CXXALIASWARN (fwrite); |
| 473 | #endif | 602 | #endif |
| 474 | 603 | ||
| 604 | #if @GNULIB_GETC@ | ||
| 605 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 606 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 607 | # undef getc | ||
| 608 | # define getc rpl_fgetc | ||
| 609 | # endif | ||
| 610 | _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); | ||
| 611 | _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); | ||
| 612 | # else | ||
| 613 | _GL_CXXALIAS_SYS (getc, int, (FILE *stream)); | ||
| 614 | # endif | ||
| 615 | _GL_CXXALIASWARN (getc); | ||
| 616 | #endif | ||
| 617 | |||
| 618 | #if @GNULIB_GETCHAR@ | ||
| 619 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 620 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 621 | # undef getchar | ||
| 622 | # define getchar rpl_getchar | ||
| 623 | # endif | ||
| 624 | _GL_FUNCDECL_RPL (getchar, int, (void)); | ||
| 625 | _GL_CXXALIAS_RPL (getchar, int, (void)); | ||
| 626 | # else | ||
| 627 | _GL_CXXALIAS_SYS (getchar, int, (void)); | ||
| 628 | # endif | ||
| 629 | _GL_CXXALIASWARN (getchar); | ||
| 630 | #endif | ||
| 631 | |||
| 475 | #if @GNULIB_GETDELIM@ | 632 | #if @GNULIB_GETDELIM@ |
| 476 | /* Read input, up to (and including) the next occurrence of DELIMITER, from | 633 | /* Read input, up to (and including) the next occurrence of DELIMITER, from |
| 477 | STREAM, store it in *LINEPTR (and NUL-terminate it). | 634 | STREAM, store it in *LINEPTR (and NUL-terminate it). |
| @@ -548,6 +705,15 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " | |||
| 548 | # endif | 705 | # endif |
| 549 | #endif | 706 | #endif |
| 550 | 707 | ||
| 708 | /* It is very rare that the developer ever has full control of stdin, | ||
| 709 | so any use of gets warrants an unconditional warning; besides, C11 | ||
| 710 | removed it. */ | ||
| 711 | #undef gets | ||
| 712 | #if HAVE_RAW_DECL_GETS | ||
| 713 | _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); | ||
| 714 | #endif | ||
| 715 | |||
| 716 | |||
| 551 | #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ | 717 | #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ |
| 552 | struct obstack; | 718 | struct obstack; |
| 553 | /* Grow an obstack with formatted output. Return the number of | 719 | /* Grow an obstack with formatted output. Return the number of |
| @@ -561,7 +727,7 @@ struct obstack; | |||
| 561 | # endif | 727 | # endif |
| 562 | _GL_FUNCDECL_RPL (obstack_printf, int, | 728 | _GL_FUNCDECL_RPL (obstack_printf, int, |
| 563 | (struct obstack *obs, const char *format, ...) | 729 | (struct obstack *obs, const char *format, ...) |
| 564 | __attribute__ ((__format__ (__printf__, 2, 3))) | 730 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 565 | _GL_ARG_NONNULL ((1, 2))); | 731 | _GL_ARG_NONNULL ((1, 2))); |
| 566 | _GL_CXXALIAS_RPL (obstack_printf, int, | 732 | _GL_CXXALIAS_RPL (obstack_printf, int, |
| 567 | (struct obstack *obs, const char *format, ...)); | 733 | (struct obstack *obs, const char *format, ...)); |
| @@ -569,7 +735,7 @@ _GL_CXXALIAS_RPL (obstack_printf, int, | |||
| 569 | # if !@HAVE_DECL_OBSTACK_PRINTF@ | 735 | # if !@HAVE_DECL_OBSTACK_PRINTF@ |
| 570 | _GL_FUNCDECL_SYS (obstack_printf, int, | 736 | _GL_FUNCDECL_SYS (obstack_printf, int, |
| 571 | (struct obstack *obs, const char *format, ...) | 737 | (struct obstack *obs, const char *format, ...) |
| 572 | __attribute__ ((__format__ (__printf__, 2, 3))) | 738 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 573 | _GL_ARG_NONNULL ((1, 2))); | 739 | _GL_ARG_NONNULL ((1, 2))); |
| 574 | # endif | 740 | # endif |
| 575 | _GL_CXXALIAS_SYS (obstack_printf, int, | 741 | _GL_CXXALIAS_SYS (obstack_printf, int, |
| @@ -582,7 +748,7 @@ _GL_CXXALIASWARN (obstack_printf); | |||
| 582 | # endif | 748 | # endif |
| 583 | _GL_FUNCDECL_RPL (obstack_vprintf, int, | 749 | _GL_FUNCDECL_RPL (obstack_vprintf, int, |
| 584 | (struct obstack *obs, const char *format, va_list args) | 750 | (struct obstack *obs, const char *format, va_list args) |
| 585 | __attribute__ ((__format__ (__printf__, 2, 0))) | 751 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) |
| 586 | _GL_ARG_NONNULL ((1, 2))); | 752 | _GL_ARG_NONNULL ((1, 2))); |
| 587 | _GL_CXXALIAS_RPL (obstack_vprintf, int, | 753 | _GL_CXXALIAS_RPL (obstack_vprintf, int, |
| 588 | (struct obstack *obs, const char *format, va_list args)); | 754 | (struct obstack *obs, const char *format, va_list args)); |
| @@ -590,7 +756,7 @@ _GL_CXXALIAS_RPL (obstack_vprintf, int, | |||
| 590 | # if !@HAVE_DECL_OBSTACK_PRINTF@ | 756 | # if !@HAVE_DECL_OBSTACK_PRINTF@ |
| 591 | _GL_FUNCDECL_SYS (obstack_vprintf, int, | 757 | _GL_FUNCDECL_SYS (obstack_vprintf, int, |
| 592 | (struct obstack *obs, const char *format, va_list args) | 758 | (struct obstack *obs, const char *format, va_list args) |
| 593 | __attribute__ ((__format__ (__printf__, 2, 0))) | 759 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) |
| 594 | _GL_ARG_NONNULL ((1, 2))); | 760 | _GL_ARG_NONNULL ((1, 2))); |
| 595 | # endif | 761 | # endif |
| 596 | _GL_CXXALIAS_SYS (obstack_vprintf, int, | 762 | _GL_CXXALIAS_SYS (obstack_vprintf, int, |
| @@ -599,6 +765,20 @@ _GL_CXXALIAS_SYS (obstack_vprintf, int, | |||
| 599 | _GL_CXXALIASWARN (obstack_vprintf); | 765 | _GL_CXXALIASWARN (obstack_vprintf); |
| 600 | #endif | 766 | #endif |
| 601 | 767 | ||
| 768 | #if @GNULIB_PCLOSE@ | ||
| 769 | # if !@HAVE_PCLOSE@ | ||
| 770 | _GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); | ||
| 771 | # endif | ||
| 772 | _GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); | ||
| 773 | _GL_CXXALIASWARN (pclose); | ||
| 774 | #elif defined GNULIB_POSIXCHECK | ||
| 775 | # undef pclose | ||
| 776 | # if HAVE_RAW_DECL_PCLOSE | ||
| 777 | _GL_WARN_ON_USE (pclose, "pclose is unportable - " | ||
| 778 | "use gnulib module pclose for more portability"); | ||
| 779 | # endif | ||
| 780 | #endif | ||
| 781 | |||
| 602 | #if @GNULIB_PERROR@ | 782 | #if @GNULIB_PERROR@ |
| 603 | /* Print a message to standard error, describing the value of ERRNO, | 783 | /* Print a message to standard error, describing the value of ERRNO, |
| 604 | (if STRING is not NULL and not empty) prefixed with STRING and ": ", | 784 | (if STRING is not NULL and not empty) prefixed with STRING and ": ", |
| @@ -630,6 +810,10 @@ _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) | |||
| 630 | _GL_ARG_NONNULL ((1, 2))); | 810 | _GL_ARG_NONNULL ((1, 2))); |
| 631 | _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); | 811 | _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); |
| 632 | # else | 812 | # else |
| 813 | # if !@HAVE_POPEN@ | ||
| 814 | _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) | ||
| 815 | _GL_ARG_NONNULL ((1, 2))); | ||
| 816 | # endif | ||
| 633 | _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); | 817 | _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); |
| 634 | # endif | 818 | # endif |
| 635 | _GL_CXXALIASWARN (popen); | 819 | _GL_CXXALIASWARN (popen); |
| @@ -643,23 +827,35 @@ _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " | |||
| 643 | 827 | ||
| 644 | #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ | 828 | #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ |
| 645 | # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ | 829 | # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ |
| 646 | || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@) | 830 | || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) |
| 647 | # if defined __GNUC__ | 831 | # if defined __GNUC__ |
| 648 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 832 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 649 | /* Don't break __attribute__((format(printf,M,N))). */ | 833 | /* Don't break __attribute__((format(printf,M,N))). */ |
| 650 | # define printf __printf__ | 834 | # define printf __printf__ |
| 651 | # endif | 835 | # endif |
| 836 | # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ | ||
| 837 | _GL_FUNCDECL_RPL_1 (__printf__, int, | ||
| 838 | (const char *format, ...) | ||
| 839 | __asm__ (@ASM_SYMBOL_PREFIX@ | ||
| 840 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) | ||
| 841 | _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) | ||
| 842 | _GL_ARG_NONNULL ((1))); | ||
| 843 | # else | ||
| 652 | _GL_FUNCDECL_RPL_1 (__printf__, int, | 844 | _GL_FUNCDECL_RPL_1 (__printf__, int, |
| 653 | (const char *format, ...) | 845 | (const char *format, ...) |
| 654 | __asm__ (@ASM_SYMBOL_PREFIX@ | 846 | __asm__ (@ASM_SYMBOL_PREFIX@ |
| 655 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) | 847 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) |
| 656 | __attribute__ ((__format__ (__printf__, 1, 2))) | 848 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) |
| 657 | _GL_ARG_NONNULL ((1))); | 849 | _GL_ARG_NONNULL ((1))); |
| 850 | # endif | ||
| 658 | _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); | 851 | _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); |
| 659 | # else | 852 | # else |
| 853 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 854 | # define printf rpl_printf | ||
| 855 | # endif | ||
| 660 | _GL_FUNCDECL_RPL (printf, int, | 856 | _GL_FUNCDECL_RPL (printf, int, |
| 661 | (const char *format, ...) | 857 | (const char *format, ...) |
| 662 | __attribute__ ((__format__ (__printf__, 1, 2))) | 858 | _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) |
| 663 | _GL_ARG_NONNULL ((1))); | 859 | _GL_ARG_NONNULL ((1))); |
| 664 | _GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); | 860 | _GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); |
| 665 | # endif | 861 | # endif |
| @@ -680,7 +876,7 @@ _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " | |||
| 680 | #endif | 876 | #endif |
| 681 | 877 | ||
| 682 | #if @GNULIB_PUTC@ | 878 | #if @GNULIB_PUTC@ |
| 683 | # if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | 879 | # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) |
| 684 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 880 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 685 | # undef putc | 881 | # undef putc |
| 686 | # define putc rpl_fputc | 882 | # define putc rpl_fputc |
| @@ -694,7 +890,7 @@ _GL_CXXALIASWARN (putc); | |||
| 694 | #endif | 890 | #endif |
| 695 | 891 | ||
| 696 | #if @GNULIB_PUTCHAR@ | 892 | #if @GNULIB_PUTCHAR@ |
| 697 | # if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | 893 | # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) |
| 698 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 894 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 699 | # undef putchar | 895 | # undef putchar |
| 700 | # define putchar rpl_putchar | 896 | # define putchar rpl_putchar |
| @@ -708,7 +904,7 @@ _GL_CXXALIASWARN (putchar); | |||
| 708 | #endif | 904 | #endif |
| 709 | 905 | ||
| 710 | #if @GNULIB_PUTS@ | 906 | #if @GNULIB_PUTS@ |
| 711 | # if @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | 907 | # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) |
| 712 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 908 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 713 | # undef puts | 909 | # undef puts |
| 714 | # define puts rpl_puts | 910 | # define puts rpl_puts |
| @@ -792,6 +988,37 @@ _GL_WARN_ON_USE (renameat, "renameat is not portable - " | |||
| 792 | # endif | 988 | # endif |
| 793 | #endif | 989 | #endif |
| 794 | 990 | ||
| 991 | #if @GNULIB_SCANF@ | ||
| 992 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 993 | # if defined __GNUC__ | ||
| 994 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 995 | # undef scanf | ||
| 996 | /* Don't break __attribute__((format(scanf,M,N))). */ | ||
| 997 | # define scanf __scanf__ | ||
| 998 | # endif | ||
| 999 | _GL_FUNCDECL_RPL_1 (__scanf__, int, | ||
| 1000 | (const char *format, ...) | ||
| 1001 | __asm__ (@ASM_SYMBOL_PREFIX@ | ||
| 1002 | _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) | ||
| 1003 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) | ||
| 1004 | _GL_ARG_NONNULL ((1))); | ||
| 1005 | _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); | ||
| 1006 | # else | ||
| 1007 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 1008 | # undef scanf | ||
| 1009 | # define scanf rpl_scanf | ||
| 1010 | # endif | ||
| 1011 | _GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) | ||
| 1012 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) | ||
| 1013 | _GL_ARG_NONNULL ((1))); | ||
| 1014 | _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); | ||
| 1015 | # endif | ||
| 1016 | # else | ||
| 1017 | _GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); | ||
| 1018 | # endif | ||
| 1019 | _GL_CXXALIASWARN (scanf); | ||
| 1020 | #endif | ||
| 1021 | |||
| 795 | #if @GNULIB_SNPRINTF@ | 1022 | #if @GNULIB_SNPRINTF@ |
| 796 | # if @REPLACE_SNPRINTF@ | 1023 | # if @REPLACE_SNPRINTF@ |
| 797 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1024 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| @@ -799,7 +1026,7 @@ _GL_WARN_ON_USE (renameat, "renameat is not portable - " | |||
| 799 | # endif | 1026 | # endif |
| 800 | _GL_FUNCDECL_RPL (snprintf, int, | 1027 | _GL_FUNCDECL_RPL (snprintf, int, |
| 801 | (char *str, size_t size, const char *format, ...) | 1028 | (char *str, size_t size, const char *format, ...) |
| 802 | __attribute__ ((__format__ (__printf__, 3, 4))) | 1029 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) |
| 803 | _GL_ARG_NONNULL ((3))); | 1030 | _GL_ARG_NONNULL ((3))); |
| 804 | _GL_CXXALIAS_RPL (snprintf, int, | 1031 | _GL_CXXALIAS_RPL (snprintf, int, |
| 805 | (char *str, size_t size, const char *format, ...)); | 1032 | (char *str, size_t size, const char *format, ...)); |
| @@ -807,7 +1034,7 @@ _GL_CXXALIAS_RPL (snprintf, int, | |||
| 807 | # if !@HAVE_DECL_SNPRINTF@ | 1034 | # if !@HAVE_DECL_SNPRINTF@ |
| 808 | _GL_FUNCDECL_SYS (snprintf, int, | 1035 | _GL_FUNCDECL_SYS (snprintf, int, |
| 809 | (char *str, size_t size, const char *format, ...) | 1036 | (char *str, size_t size, const char *format, ...) |
| 810 | __attribute__ ((__format__ (__printf__, 3, 4))) | 1037 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) |
| 811 | _GL_ARG_NONNULL ((3))); | 1038 | _GL_ARG_NONNULL ((3))); |
| 812 | # endif | 1039 | # endif |
| 813 | _GL_CXXALIAS_SYS (snprintf, int, | 1040 | _GL_CXXALIAS_SYS (snprintf, int, |
| @@ -822,9 +1049,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " | |||
| 822 | # endif | 1049 | # endif |
| 823 | #endif | 1050 | #endif |
| 824 | 1051 | ||
| 825 | /* Some people would argue that sprintf should be handled like gets | 1052 | /* Some people would argue that all sprintf uses should be warned about |
| 826 | (for example, OpenBSD issues a link warning for both functions), | 1053 | (for example, OpenBSD issues a link warning for it), |
| 827 | since both can cause security holes due to buffer overruns. | 1054 | since it can cause security holes due to buffer overruns. |
| 828 | However, we believe that sprintf can be used safely, and is more | 1055 | However, we believe that sprintf can be used safely, and is more |
| 829 | efficient than snprintf in those safe cases; and as proof of our | 1056 | efficient than snprintf in those safe cases; and as proof of our |
| 830 | belief, we use sprintf in several gnulib modules. So this header | 1057 | belief, we use sprintf in several gnulib modules. So this header |
| @@ -837,7 +1064,7 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " | |||
| 837 | # define sprintf rpl_sprintf | 1064 | # define sprintf rpl_sprintf |
| 838 | # endif | 1065 | # endif |
| 839 | _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) | 1066 | _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) |
| 840 | __attribute__ ((__format__ (__printf__, 2, 3))) | 1067 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 841 | _GL_ARG_NONNULL ((1, 2))); | 1068 | _GL_ARG_NONNULL ((1, 2))); |
| 842 | _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); | 1069 | _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); |
| 843 | # else | 1070 | # else |
| @@ -882,7 +1109,7 @@ _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " | |||
| 882 | # endif | 1109 | # endif |
| 883 | _GL_FUNCDECL_RPL (asprintf, int, | 1110 | _GL_FUNCDECL_RPL (asprintf, int, |
| 884 | (char **result, const char *format, ...) | 1111 | (char **result, const char *format, ...) |
| 885 | __attribute__ ((__format__ (__printf__, 2, 3))) | 1112 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 886 | _GL_ARG_NONNULL ((1, 2))); | 1113 | _GL_ARG_NONNULL ((1, 2))); |
| 887 | _GL_CXXALIAS_RPL (asprintf, int, | 1114 | _GL_CXXALIAS_RPL (asprintf, int, |
| 888 | (char **result, const char *format, ...)); | 1115 | (char **result, const char *format, ...)); |
| @@ -890,7 +1117,7 @@ _GL_CXXALIAS_RPL (asprintf, int, | |||
| 890 | # if !@HAVE_VASPRINTF@ | 1117 | # if !@HAVE_VASPRINTF@ |
| 891 | _GL_FUNCDECL_SYS (asprintf, int, | 1118 | _GL_FUNCDECL_SYS (asprintf, int, |
| 892 | (char **result, const char *format, ...) | 1119 | (char **result, const char *format, ...) |
| 893 | __attribute__ ((__format__ (__printf__, 2, 3))) | 1120 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) |
| 894 | _GL_ARG_NONNULL ((1, 2))); | 1121 | _GL_ARG_NONNULL ((1, 2))); |
| 895 | # endif | 1122 | # endif |
| 896 | _GL_CXXALIAS_SYS (asprintf, int, | 1123 | _GL_CXXALIAS_SYS (asprintf, int, |
| @@ -903,7 +1130,7 @@ _GL_CXXALIASWARN (asprintf); | |||
| 903 | # endif | 1130 | # endif |
| 904 | _GL_FUNCDECL_RPL (vasprintf, int, | 1131 | _GL_FUNCDECL_RPL (vasprintf, int, |
| 905 | (char **result, const char *format, va_list args) | 1132 | (char **result, const char *format, va_list args) |
| 906 | __attribute__ ((__format__ (__printf__, 2, 0))) | 1133 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) |
| 907 | _GL_ARG_NONNULL ((1, 2))); | 1134 | _GL_ARG_NONNULL ((1, 2))); |
| 908 | _GL_CXXALIAS_RPL (vasprintf, int, | 1135 | _GL_CXXALIAS_RPL (vasprintf, int, |
| 909 | (char **result, const char *format, va_list args)); | 1136 | (char **result, const char *format, va_list args)); |
| @@ -911,7 +1138,7 @@ _GL_CXXALIAS_RPL (vasprintf, int, | |||
| 911 | # if !@HAVE_VASPRINTF@ | 1138 | # if !@HAVE_VASPRINTF@ |
| 912 | _GL_FUNCDECL_SYS (vasprintf, int, | 1139 | _GL_FUNCDECL_SYS (vasprintf, int, |
| 913 | (char **result, const char *format, va_list args) | 1140 | (char **result, const char *format, va_list args) |
| 914 | __attribute__ ((__format__ (__printf__, 2, 0))) | 1141 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) |
| 915 | _GL_ARG_NONNULL ((1, 2))); | 1142 | _GL_ARG_NONNULL ((1, 2))); |
| 916 | # endif | 1143 | # endif |
| 917 | _GL_CXXALIAS_SYS (vasprintf, int, | 1144 | _GL_CXXALIAS_SYS (vasprintf, int, |
| @@ -926,13 +1153,13 @@ _GL_CXXALIASWARN (vasprintf); | |||
| 926 | # define vdprintf rpl_vdprintf | 1153 | # define vdprintf rpl_vdprintf |
| 927 | # endif | 1154 | # endif |
| 928 | _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) | 1155 | _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) |
| 929 | __attribute__ ((__format__ (__printf__, 2, 0))) | 1156 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) |
| 930 | _GL_ARG_NONNULL ((2))); | 1157 | _GL_ARG_NONNULL ((2))); |
| 931 | _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); | 1158 | _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); |
| 932 | # else | 1159 | # else |
| 933 | # if !@HAVE_VDPRINTF@ | 1160 | # if !@HAVE_VDPRINTF@ |
| 934 | _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) | 1161 | _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) |
| 935 | __attribute__ ((__format__ (__printf__, 2, 0))) | 1162 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) |
| 936 | _GL_ARG_NONNULL ((2))); | 1163 | _GL_ARG_NONNULL ((2))); |
| 937 | # endif | 1164 | # endif |
| 938 | /* Need to cast, because on Solaris, the third parameter will likely be | 1165 | /* Need to cast, because on Solaris, the third parameter will likely be |
| @@ -951,14 +1178,20 @@ _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " | |||
| 951 | 1178 | ||
| 952 | #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@ | 1179 | #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@ |
| 953 | # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \ | 1180 | # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \ |
| 954 | || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@) | 1181 | || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) |
| 955 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1182 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 956 | # define vfprintf rpl_vfprintf | 1183 | # define vfprintf rpl_vfprintf |
| 957 | # endif | 1184 | # endif |
| 958 | # define GNULIB_overrides_vfprintf 1 | 1185 | # define GNULIB_overrides_vfprintf 1 |
| 1186 | # if @GNULIB_VFPRINTF_POSIX@ | ||
| 1187 | _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) | ||
| 1188 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) | ||
| 1189 | _GL_ARG_NONNULL ((1, 2))); | ||
| 1190 | # else | ||
| 959 | _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) | 1191 | _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) |
| 960 | __attribute__ ((__format__ (__printf__, 2, 0))) | 1192 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) |
| 961 | _GL_ARG_NONNULL ((1, 2))); | 1193 | _GL_ARG_NONNULL ((1, 2))); |
| 1194 | # endif | ||
| 962 | _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); | 1195 | _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); |
| 963 | # else | 1196 | # else |
| 964 | /* Need to cast, because on Solaris, the third parameter is | 1197 | /* Need to cast, because on Solaris, the third parameter is |
| @@ -979,16 +1212,41 @@ _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " | |||
| 979 | "POSIX compliance"); | 1212 | "POSIX compliance"); |
| 980 | #endif | 1213 | #endif |
| 981 | 1214 | ||
| 1215 | #if @GNULIB_VFSCANF@ | ||
| 1216 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 1217 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 1218 | # undef vfscanf | ||
| 1219 | # define vfscanf rpl_vfscanf | ||
| 1220 | # endif | ||
| 1221 | _GL_FUNCDECL_RPL (vfscanf, int, | ||
| 1222 | (FILE *stream, const char *format, va_list args) | ||
| 1223 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) | ||
| 1224 | _GL_ARG_NONNULL ((1, 2))); | ||
| 1225 | _GL_CXXALIAS_RPL (vfscanf, int, | ||
| 1226 | (FILE *stream, const char *format, va_list args)); | ||
| 1227 | # else | ||
| 1228 | _GL_CXXALIAS_SYS (vfscanf, int, | ||
| 1229 | (FILE *stream, const char *format, va_list args)); | ||
| 1230 | # endif | ||
| 1231 | _GL_CXXALIASWARN (vfscanf); | ||
| 1232 | #endif | ||
| 1233 | |||
| 982 | #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ | 1234 | #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ |
| 983 | # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \ | 1235 | # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \ |
| 984 | || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@) | 1236 | || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) |
| 985 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1237 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 986 | # define vprintf rpl_vprintf | 1238 | # define vprintf rpl_vprintf |
| 987 | # endif | 1239 | # endif |
| 988 | # define GNULIB_overrides_vprintf 1 | 1240 | # define GNULIB_overrides_vprintf 1 |
| 1241 | # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ | ||
| 989 | _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) | 1242 | _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) |
| 990 | __attribute__ ((__format__ (__printf__, 1, 0))) | 1243 | _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) |
| 991 | _GL_ARG_NONNULL ((1))); | 1244 | _GL_ARG_NONNULL ((1))); |
| 1245 | # else | ||
| 1246 | _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) | ||
| 1247 | _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) | ||
| 1248 | _GL_ARG_NONNULL ((1))); | ||
| 1249 | # endif | ||
| 992 | _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); | 1250 | _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); |
| 993 | # else | 1251 | # else |
| 994 | /* Need to cast, because on Solaris, the second parameter is | 1252 | /* Need to cast, because on Solaris, the second parameter is |
| @@ -1008,6 +1266,22 @@ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " | |||
| 1008 | "POSIX compliance"); | 1266 | "POSIX compliance"); |
| 1009 | #endif | 1267 | #endif |
| 1010 | 1268 | ||
| 1269 | #if @GNULIB_VSCANF@ | ||
| 1270 | # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ | ||
| 1271 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 1272 | # undef vscanf | ||
| 1273 | # define vscanf rpl_vscanf | ||
| 1274 | # endif | ||
| 1275 | _GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) | ||
| 1276 | _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) | ||
| 1277 | _GL_ARG_NONNULL ((1))); | ||
| 1278 | _GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); | ||
| 1279 | # else | ||
| 1280 | _GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); | ||
| 1281 | # endif | ||
| 1282 | _GL_CXXALIASWARN (vscanf); | ||
| 1283 | #endif | ||
| 1284 | |||
| 1011 | #if @GNULIB_VSNPRINTF@ | 1285 | #if @GNULIB_VSNPRINTF@ |
| 1012 | # if @REPLACE_VSNPRINTF@ | 1286 | # if @REPLACE_VSNPRINTF@ |
| 1013 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1287 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| @@ -1015,7 +1289,7 @@ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " | |||
| 1015 | # endif | 1289 | # endif |
| 1016 | _GL_FUNCDECL_RPL (vsnprintf, int, | 1290 | _GL_FUNCDECL_RPL (vsnprintf, int, |
| 1017 | (char *str, size_t size, const char *format, va_list args) | 1291 | (char *str, size_t size, const char *format, va_list args) |
| 1018 | __attribute__ ((__format__ (__printf__, 3, 0))) | 1292 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) |
| 1019 | _GL_ARG_NONNULL ((3))); | 1293 | _GL_ARG_NONNULL ((3))); |
| 1020 | _GL_CXXALIAS_RPL (vsnprintf, int, | 1294 | _GL_CXXALIAS_RPL (vsnprintf, int, |
| 1021 | (char *str, size_t size, const char *format, va_list args)); | 1295 | (char *str, size_t size, const char *format, va_list args)); |
| @@ -1023,7 +1297,7 @@ _GL_CXXALIAS_RPL (vsnprintf, int, | |||
| 1023 | # if !@HAVE_DECL_VSNPRINTF@ | 1297 | # if !@HAVE_DECL_VSNPRINTF@ |
| 1024 | _GL_FUNCDECL_SYS (vsnprintf, int, | 1298 | _GL_FUNCDECL_SYS (vsnprintf, int, |
| 1025 | (char *str, size_t size, const char *format, va_list args) | 1299 | (char *str, size_t size, const char *format, va_list args) |
| 1026 | __attribute__ ((__format__ (__printf__, 3, 0))) | 1300 | _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) |
| 1027 | _GL_ARG_NONNULL ((3))); | 1301 | _GL_ARG_NONNULL ((3))); |
| 1028 | # endif | 1302 | # endif |
| 1029 | _GL_CXXALIAS_SYS (vsnprintf, int, | 1303 | _GL_CXXALIAS_SYS (vsnprintf, int, |
| @@ -1045,7 +1319,7 @@ _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " | |||
| 1045 | # endif | 1319 | # endif |
| 1046 | _GL_FUNCDECL_RPL (vsprintf, int, | 1320 | _GL_FUNCDECL_RPL (vsprintf, int, |
| 1047 | (char *str, const char *format, va_list args) | 1321 | (char *str, const char *format, va_list args) |
| 1048 | __attribute__ ((__format__ (__printf__, 2, 0))) | 1322 | _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) |
| 1049 | _GL_ARG_NONNULL ((1, 2))); | 1323 | _GL_ARG_NONNULL ((1, 2))); |
| 1050 | _GL_CXXALIAS_RPL (vsprintf, int, | 1324 | _GL_CXXALIAS_RPL (vsprintf, int, |
| 1051 | (char *str, const char *format, va_list args)); | 1325 | (char *str, const char *format, va_list args)); |
| @@ -1065,7 +1339,6 @@ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " | |||
| 1065 | "POSIX compliance"); | 1339 | "POSIX compliance"); |
| 1066 | #endif | 1340 | #endif |
| 1067 | 1341 | ||
| 1068 | 1342 | #endif /* _@GUARD_PREFIX@_STDIO_H */ | |
| 1069 | #endif /* _GL_STDIO_H */ | 1343 | #endif /* _@GUARD_PREFIX@_STDIO_H */ |
| 1070 | #endif /* _GL_STDIO_H */ | ||
| 1071 | #endif | 1344 | #endif |
