Annotation of embedaddon/libiconv/srclib/stdio.in.h, revision 1.1.1.2
1.1 misho 1: /* A GNU-like <stdio.h>.
2:
1.1.1.2 ! misho 3: Copyright (C) 2004, 2007-2011 Free Software Foundation, Inc.
1.1 misho 4:
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
7: the Free Software Foundation; either version 3, or (at your option)
8: any later version.
9:
10: This program is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
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,
17: Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18:
19: #if __GNUC__ >= 3
20: @PRAGMA_SYSTEM_HEADER@
21: #endif
1.1.1.2 ! misho 22: @PRAGMA_COLUMNS@
1.1 misho 23:
1.1.1.2 ! misho 24: #if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
! 25: /* Special invocation convention:
! 26: - Inside glibc header files.
! 27: - On OSF/1 5.1 we have a sequence of nested includes
! 28: <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
! 29: <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
! 30: In this situation, the functions are not yet declared, therefore we cannot
! 31: provide the C++ aliases. */
1.1 misho 32:
33: #@INCLUDE_NEXT@ @NEXT_STDIO_H@
34:
35: #else
36: /* Normal invocation convention. */
37:
1.1.1.2 ! misho 38: #ifndef _@GUARD_PREFIX@_STDIO_H
! 39:
! 40: #define _GL_ALREADY_INCLUDING_STDIO_H
1.1 misho 41:
42: /* The include_next requires a split double-inclusion guard. */
43: #@INCLUDE_NEXT@ @NEXT_STDIO_H@
44:
1.1.1.2 ! misho 45: #undef _GL_ALREADY_INCLUDING_STDIO_H
! 46:
! 47: #ifndef _@GUARD_PREFIX@_STDIO_H
! 48: #define _@GUARD_PREFIX@_STDIO_H
1.1 misho 49:
1.1.1.2 ! misho 50: /* Get va_list. Needed on many systems, including glibc 2.8. */
1.1 misho 51: #include <stdarg.h>
1.1.1.2 ! misho 52:
1.1 misho 53: #include <stddef.h>
54:
1.1.1.2 ! misho 55: /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8
! 56: and eglibc 2.11.2. */
! 57: #include <sys/types.h>
! 58:
! 59: /* The __attribute__ feature is available in gcc versions 2.5 and later.
! 60: The __-protected variants of the attributes 'format' and 'printf' are
! 61: 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
! 63: gnulib and libintl do '#define printf __printf__' when they override
! 64: the 'printf' function. */
! 65: #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
! 66: # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
! 67: #else
! 68: # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
1.1 misho 69: #endif
70:
1.1.1.2 ! misho 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))
1.1 misho 81: #endif
82:
1.1.1.2 ! misho 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
1.1 misho 101:
1.1.1.2 ! misho 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))
1.1 misho 108:
1.1.1.2 ! misho 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>
1.1 misho 114: #endif
115:
116:
1.1.1.2 ! misho 117: /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
! 118:
! 119: /* The definition of _GL_ARG_NONNULL is copied here. */
! 120:
! 121: /* The definition of _GL_WARN_ON_USE is copied here. */
! 122:
! 123: /* Macros for stringification. */
! 124: #define _GL_STDIO_STRINGIZE(token) #token
! 125: #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
! 126:
1.1 misho 127:
1.1.1.2 ! misho 128: #if @GNULIB_DPRINTF@
! 129: # if @REPLACE_DPRINTF@
! 130: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 131: # define dprintf rpl_dprintf
! 132: # endif
! 133: _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
! 134: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 135: _GL_ARG_NONNULL ((2)));
! 136: _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
! 137: # else
! 138: # if !@HAVE_DPRINTF@
! 139: _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
! 140: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 141: _GL_ARG_NONNULL ((2)));
! 142: # endif
! 143: _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
1.1 misho 144: # endif
1.1.1.2 ! misho 145: _GL_CXXALIASWARN (dprintf);
1.1 misho 146: #elif defined GNULIB_POSIXCHECK
1.1.1.2 ! misho 147: # undef dprintf
! 148: # if HAVE_RAW_DECL_DPRINTF
! 149: _GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
! 150: "use gnulib module dprintf for portability");
1.1 misho 151: # endif
152: #endif
153:
1.1.1.2 ! misho 154: #if @GNULIB_FCLOSE@
! 155: /* Close STREAM and its underlying file descriptor. */
! 156: # if @REPLACE_FCLOSE@
! 157: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 158: # define fclose rpl_fclose
! 159: # endif
! 160: _GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
! 161: _GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
! 162: # else
! 163: _GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
1.1 misho 164: # endif
1.1.1.2 ! misho 165: _GL_CXXALIASWARN (fclose);
1.1 misho 166: #elif defined GNULIB_POSIXCHECK
1.1.1.2 ! misho 167: # undef fclose
! 168: /* Assume fclose is always declared. */
! 169: _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
! 170: "use gnulib module fclose for portable POSIX compliance");
1.1 misho 171: #endif
172:
1.1.1.2 ! misho 173: #if @GNULIB_FFLUSH@
! 174: /* Flush all pending data on STREAM according to POSIX rules. Both
! 175: output and seekable input streams are supported.
! 176: Note! LOSS OF DATA can occur if fflush is applied on an input stream
! 177: that is _not_seekable_ or on an update stream that is _not_seekable_
! 178: and in which the most recent operation was input. Seekability can
! 179: be tested with lseek(fileno(fp),0,SEEK_CUR). */
! 180: # if @REPLACE_FFLUSH@
! 181: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 182: # define fflush rpl_fflush
! 183: # endif
! 184: _GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
! 185: _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
! 186: # else
! 187: _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
1.1 misho 188: # endif
1.1.1.2 ! misho 189: _GL_CXXALIASWARN (fflush);
1.1 misho 190: #elif defined GNULIB_POSIXCHECK
1.1.1.2 ! misho 191: # undef fflush
! 192: /* Assume fflush is always declared. */
! 193: _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
! 194: "use gnulib module fflush for portable POSIX compliance");
1.1 misho 195: #endif
196:
1.1.1.2 ! misho 197: #if @GNULIB_FGETC@
! 198: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 199: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 200: # undef fgetc
! 201: # define fgetc rpl_fgetc
! 202: # endif
! 203: _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
! 204: _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
! 205: # else
! 206: _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
1.1 misho 207: # endif
1.1.1.2 ! misho 208: _GL_CXXALIASWARN (fgetc);
1.1 misho 209: #endif
210:
1.1.1.2 ! misho 211: #if @GNULIB_FGETS@
! 212: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 213: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 214: # undef fgets
! 215: # define fgets rpl_fgets
! 216: # endif
! 217: _GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream)
! 218: _GL_ARG_NONNULL ((1, 3)));
! 219: _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
! 220: # else
! 221: _GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
1.1 misho 222: # endif
1.1.1.2 ! misho 223: _GL_CXXALIASWARN (fgets);
1.1 misho 224: #endif
225:
1.1.1.2 ! misho 226: #if @GNULIB_FOPEN@
! 227: # if @REPLACE_FOPEN@
! 228: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 229: # undef fopen
! 230: # define fopen rpl_fopen
! 231: # endif
! 232: _GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode)
! 233: _GL_ARG_NONNULL ((1, 2)));
! 234: _GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
! 235: # else
! 236: _GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
1.1 misho 237: # endif
1.1.1.2 ! misho 238: _GL_CXXALIASWARN (fopen);
1.1 misho 239: #elif defined GNULIB_POSIXCHECK
1.1.1.2 ! misho 240: # undef fopen
! 241: /* Assume fopen is always declared. */
! 242: _GL_WARN_ON_USE (fopen, "fopen on Win32 platforms is not POSIX compatible - "
! 243: "use gnulib module fopen for portability");
! 244: #endif
! 245:
! 246: #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@
! 247: # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \
! 248: || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
! 249: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 250: # define fprintf rpl_fprintf
! 251: # endif
! 252: # define GNULIB_overrides_fprintf 1
! 253: # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
! 254: _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
! 255: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 256: _GL_ARG_NONNULL ((1, 2)));
! 257: # else
! 258: _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
! 259: _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
! 260: _GL_ARG_NONNULL ((1, 2)));
! 261: # endif
! 262: _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
! 263: # else
! 264: _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
! 265: # endif
! 266: _GL_CXXALIASWARN (fprintf);
! 267: #endif
! 268: #if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
! 269: # if !GNULIB_overrides_fprintf
! 270: # undef fprintf
! 271: # endif
! 272: /* Assume fprintf is always declared. */
! 273: _GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
! 274: "use gnulib module fprintf-posix for portable "
! 275: "POSIX compliance");
1.1 misho 276: #endif
277:
1.1.1.2 ! misho 278: #if @GNULIB_FPURGE@
! 279: /* Discard all pending buffered I/O data on STREAM.
! 280: STREAM must not be wide-character oriented.
! 281: When discarding pending output, the file position is set back to where it
! 282: was before the write calls. When discarding pending input, the file
! 283: position is advanced to match the end of the previously read input.
! 284: Return 0 if successful. Upon error, return -1 and set errno. */
! 285: # if @REPLACE_FPURGE@
! 286: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 287: # define fpurge rpl_fpurge
! 288: # endif
! 289: _GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
! 290: _GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
! 291: # else
! 292: # if !@HAVE_DECL_FPURGE@
! 293: _GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
! 294: # endif
! 295: _GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
1.1 misho 296: # endif
1.1.1.2 ! misho 297: _GL_CXXALIASWARN (fpurge);
1.1 misho 298: #elif defined GNULIB_POSIXCHECK
1.1.1.2 ! misho 299: # undef fpurge
! 300: # if HAVE_RAW_DECL_FPURGE
! 301: _GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
! 302: "use gnulib module fpurge for portability");
! 303: # endif
1.1 misho 304: #endif
305:
1.1.1.2 ! misho 306: #if @GNULIB_FPUTC@
! 307: # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
! 308: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 309: # undef fputc
! 310: # define fputc rpl_fputc
! 311: # endif
! 312: _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
! 313: _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
! 314: # else
! 315: _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
1.1 misho 316: # endif
1.1.1.2 ! misho 317: _GL_CXXALIASWARN (fputc);
1.1 misho 318: #endif
319:
1.1.1.2 ! misho 320: #if @GNULIB_FPUTS@
! 321: # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
! 322: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 323: # undef fputs
! 324: # define fputs rpl_fputs
! 325: # endif
! 326: _GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream)
! 327: _GL_ARG_NONNULL ((1, 2)));
! 328: _GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
! 329: # else
! 330: _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
1.1 misho 331: # endif
1.1.1.2 ! misho 332: _GL_CXXALIASWARN (fputs);
1.1 misho 333: #endif
334:
1.1.1.2 ! misho 335: #if @GNULIB_FREAD@
! 336: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 337: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 338: # undef fread
! 339: # define fread rpl_fread
! 340: # endif
! 341: _GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)
! 342: _GL_ARG_NONNULL ((4)));
! 343: _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
! 344: # else
! 345: _GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
1.1 misho 346: # endif
1.1.1.2 ! misho 347: _GL_CXXALIASWARN (fread);
1.1 misho 348: #endif
349:
350: #if @GNULIB_FREOPEN@
351: # if @REPLACE_FREOPEN@
1.1.1.2 ! misho 352: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 353: # undef freopen
! 354: # define freopen rpl_freopen
! 355: # endif
! 356: _GL_FUNCDECL_RPL (freopen, FILE *,
! 357: (const char *filename, const char *mode, FILE *stream)
! 358: _GL_ARG_NONNULL ((2, 3)));
! 359: _GL_CXXALIAS_RPL (freopen, FILE *,
! 360: (const char *filename, const char *mode, FILE *stream));
! 361: # else
! 362: _GL_CXXALIAS_SYS (freopen, FILE *,
! 363: (const char *filename, const char *mode, FILE *stream));
1.1 misho 364: # endif
1.1.1.2 ! misho 365: _GL_CXXALIASWARN (freopen);
1.1 misho 366: #elif defined GNULIB_POSIXCHECK
367: # undef freopen
1.1.1.2 ! misho 368: /* Assume freopen is always declared. */
! 369: _GL_WARN_ON_USE (freopen,
! 370: "freopen on Win32 platforms is not POSIX compatible - "
! 371: "use gnulib module freopen for portability");
! 372: #endif
! 373:
! 374: #if @GNULIB_FSCANF@
! 375: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 376: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 377: # undef fscanf
! 378: # define fscanf rpl_fscanf
! 379: # endif
! 380: _GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...)
! 381: _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
! 382: _GL_ARG_NONNULL ((1, 2)));
! 383: _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
! 384: # else
! 385: _GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
! 386: # endif
! 387: _GL_CXXALIASWARN (fscanf);
! 388: #endif
! 389:
! 390:
! 391: /* Set up the following warnings, based on which modules are in use.
! 392: GNU Coding Standards discourage the use of fseek, since it imposes
! 393: an arbitrary limitation on some 32-bit hosts. Remember that the
! 394: fseek module depends on the fseeko module, so we only have three
! 395: cases to consider:
! 396:
! 397: 1. The developer is not using either module. Issue a warning under
! 398: GNULIB_POSIXCHECK for both functions, to remind them that both
! 399: functions have bugs on some systems. _GL_NO_LARGE_FILES has no
! 400: impact on this warning.
! 401:
! 402: 2. The developer is using both modules. They may be unaware of the
! 403: arbitrary limitations of fseek, so issue a warning under
! 404: GNULIB_POSIXCHECK. On the other hand, they may be using both
! 405: modules intentionally, so the developer can define
! 406: _GL_NO_LARGE_FILES in the compilation units where the use of fseek
! 407: is safe, to silence the warning.
! 408:
! 409: 3. The developer is using the fseeko module, but not fseek. Gnulib
! 410: guarantees that fseek will still work around platform bugs in that
! 411: case, but we presume that the developer is aware of the pitfalls of
! 412: fseek and was trying to avoid it, so issue a warning even when
! 413: GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be
! 414: defined to silence the warning in particular compilation units.
! 415: In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
! 416: fseek gets defined as a macro, it is recommended that the developer
! 417: uses the fseek module, even if he is not calling the fseek function.
! 418:
! 419: Most gnulib clients that perform stream operations should fall into
! 420: category 3. */
! 421:
! 422: #if @GNULIB_FSEEK@
! 423: # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
! 424: # define _GL_FSEEK_WARN /* Category 2, above. */
! 425: # undef fseek
! 426: # endif
! 427: # if @REPLACE_FSEEK@
! 428: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 429: # undef fseek
! 430: # define fseek rpl_fseek
! 431: # endif
! 432: _GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
! 433: _GL_ARG_NONNULL ((1)));
! 434: _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
! 435: # else
! 436: _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
! 437: # endif
! 438: _GL_CXXALIASWARN (fseek);
1.1 misho 439: #endif
440:
441: #if @GNULIB_FSEEKO@
1.1.1.2 ! misho 442: # if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES
! 443: # define _GL_FSEEK_WARN /* Category 3, above. */
! 444: # undef fseek
! 445: # endif
1.1 misho 446: # if @REPLACE_FSEEKO@
1.1.1.2 ! misho 447: /* Provide an fseeko function that is aware of a preceding fflush(), and which
! 448: detects pipes. */
! 449: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 450: # undef fseeko
! 451: # define fseeko rpl_fseeko
! 452: # endif
! 453: _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
! 454: _GL_ARG_NONNULL ((1)));
! 455: _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
! 456: # else
! 457: # if ! @HAVE_DECL_FSEEKO@
! 458: _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
! 459: _GL_ARG_NONNULL ((1)));
! 460: # endif
! 461: _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
1.1 misho 462: # endif
1.1.1.2 ! misho 463: _GL_CXXALIASWARN (fseeko);
1.1 misho 464: #elif defined GNULIB_POSIXCHECK
1.1.1.2 ! misho 465: # define _GL_FSEEK_WARN /* Category 1, above. */
1.1 misho 466: # undef fseek
1.1.1.2 ! misho 467: # undef fseeko
! 468: # if HAVE_RAW_DECL_FSEEKO
! 469: _GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
! 470: "use gnulib module fseeko for portability");
1.1 misho 471: # endif
472: #endif
473:
1.1.1.2 ! misho 474: #ifdef _GL_FSEEK_WARN
! 475: # undef _GL_FSEEK_WARN
! 476: /* Here, either fseek is undefined (but C89 guarantees that it is
! 477: declared), or it is defined as rpl_fseek (declared above). */
! 478: _GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
! 479: "on 32-bit platforms - "
! 480: "use fseeko function for handling of large files");
1.1 misho 481: #endif
482:
483:
1.1.1.2 ! misho 484: /* ftell, ftello. See the comments on fseek/fseeko. */
1.1 misho 485:
1.1.1.2 ! misho 486: #if @GNULIB_FTELL@
! 487: # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
! 488: # define _GL_FTELL_WARN /* Category 2, above. */
! 489: # undef ftell
1.1 misho 490: # endif
1.1.1.2 ! misho 491: # if @REPLACE_FTELL@
! 492: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 493: # undef ftell
! 494: # define ftell rpl_ftell
! 495: # endif
! 496: _GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
! 497: _GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
! 498: # else
! 499: _GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
1.1 misho 500: # endif
1.1.1.2 ! misho 501: _GL_CXXALIASWARN (ftell);
1.1 misho 502: #endif
503:
1.1.1.2 ! misho 504: #if @GNULIB_FTELLO@
! 505: # if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES
! 506: # define _GL_FTELL_WARN /* Category 3, above. */
! 507: # undef ftell
1.1 misho 508: # endif
1.1.1.2 ! misho 509: # if @REPLACE_FTELLO@
! 510: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 511: # undef ftello
! 512: # define ftello rpl_ftello
! 513: # endif
! 514: _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
! 515: _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
! 516: # else
! 517: # if ! @HAVE_DECL_FTELLO@
! 518: _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
! 519: # endif
! 520: _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
! 521: # endif
! 522: _GL_CXXALIASWARN (ftello);
1.1 misho 523: #elif defined GNULIB_POSIXCHECK
1.1.1.2 ! misho 524: # define _GL_FTELL_WARN /* Category 1, above. */
! 525: # undef ftell
! 526: # undef ftello
! 527: # if HAVE_RAW_DECL_FTELLO
! 528: _GL_WARN_ON_USE (ftello, "ftello is unportable - "
! 529: "use gnulib module ftello for portability");
! 530: # endif
1.1 misho 531: #endif
532:
1.1.1.2 ! misho 533: #ifdef _GL_FTELL_WARN
! 534: # undef _GL_FTELL_WARN
! 535: /* Here, either ftell is undefined (but C89 guarantees that it is
! 536: declared), or it is defined as rpl_ftell (declared above). */
! 537: _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
! 538: "on 32-bit platforms - "
! 539: "use ftello function for handling of large files");
1.1 misho 540: #endif
541:
542:
1.1.1.2 ! misho 543: #if @GNULIB_FWRITE@
! 544: # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
! 545: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 546: # undef fwrite
! 547: # define fwrite rpl_fwrite
! 548: # endif
! 549: _GL_FUNCDECL_RPL (fwrite, size_t,
! 550: (const void *ptr, size_t s, size_t n, FILE *stream)
! 551: _GL_ARG_NONNULL ((1, 4)));
! 552: _GL_CXXALIAS_RPL (fwrite, size_t,
! 553: (const void *ptr, size_t s, size_t n, FILE *stream));
! 554: # else
! 555: _GL_CXXALIAS_SYS (fwrite, size_t,
! 556: (const void *ptr, size_t s, size_t n, FILE *stream));
1.1 misho 557:
1.1.1.2 ! misho 558: /* Work around glibc bug 11959
! 559: <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
! 560: which sometimes causes an unwanted diagnostic for fwrite calls.
! 561: This affects only function declaration attributes, so it's not
! 562: needed for C++. */
! 563: # if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL
! 564: static inline size_t _GL_ARG_NONNULL ((1, 4))
! 565: rpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
! 566: {
! 567: size_t r = fwrite (ptr, s, n, stream);
! 568: (void) r;
! 569: return r;
! 570: }
! 571: # undef fwrite
! 572: # define fwrite rpl_fwrite
! 573: # endif
! 574: # endif
! 575: _GL_CXXALIASWARN (fwrite);
1.1 misho 576: #endif
577:
1.1.1.2 ! misho 578: #if @GNULIB_GETC@
! 579: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 580: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 581: # undef getc
! 582: # define getc rpl_fgetc
! 583: # endif
! 584: _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
! 585: _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
! 586: # else
! 587: _GL_CXXALIAS_SYS (getc, int, (FILE *stream));
! 588: # endif
! 589: _GL_CXXALIASWARN (getc);
1.1 misho 590: #endif
591:
1.1.1.2 ! misho 592: #if @GNULIB_GETCHAR@
! 593: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 594: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 595: # undef getchar
! 596: # define getchar rpl_getchar
! 597: # endif
! 598: _GL_FUNCDECL_RPL (getchar, int, (void));
! 599: _GL_CXXALIAS_RPL (getchar, int, (void));
! 600: # else
! 601: _GL_CXXALIAS_SYS (getchar, int, (void));
! 602: # endif
! 603: _GL_CXXALIASWARN (getchar);
1.1 misho 604: #endif
605:
606: #if @GNULIB_GETDELIM@
607: /* Read input, up to (and including) the next occurrence of DELIMITER, from
608: STREAM, store it in *LINEPTR (and NUL-terminate it).
609: *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
610: bytes of space. It is realloc'd as necessary.
611: Return the number of bytes read and stored at *LINEPTR (not including the
612: NUL terminator), or -1 on error or EOF. */
1.1.1.2 ! misho 613: # if @REPLACE_GETDELIM@
! 614: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 615: # undef getdelim
! 616: # define getdelim rpl_getdelim
! 617: # endif
! 618: _GL_FUNCDECL_RPL (getdelim, ssize_t,
! 619: (char **lineptr, size_t *linesize, int delimiter,
! 620: FILE *stream)
! 621: _GL_ARG_NONNULL ((1, 2, 4)));
! 622: _GL_CXXALIAS_RPL (getdelim, ssize_t,
! 623: (char **lineptr, size_t *linesize, int delimiter,
! 624: FILE *stream));
! 625: # else
! 626: # if !@HAVE_DECL_GETDELIM@
! 627: _GL_FUNCDECL_SYS (getdelim, ssize_t,
! 628: (char **lineptr, size_t *linesize, int delimiter,
! 629: FILE *stream)
! 630: _GL_ARG_NONNULL ((1, 2, 4)));
! 631: # endif
! 632: _GL_CXXALIAS_SYS (getdelim, ssize_t,
! 633: (char **lineptr, size_t *linesize, int delimiter,
! 634: FILE *stream));
1.1 misho 635: # endif
1.1.1.2 ! misho 636: _GL_CXXALIASWARN (getdelim);
1.1 misho 637: #elif defined GNULIB_POSIXCHECK
638: # undef getdelim
1.1.1.2 ! misho 639: # if HAVE_RAW_DECL_GETDELIM
! 640: _GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
! 641: "use gnulib module getdelim for portability");
! 642: # endif
1.1 misho 643: #endif
644:
645: #if @GNULIB_GETLINE@
646: /* Read a line, up to (and including) the next newline, from STREAM, store it
647: in *LINEPTR (and NUL-terminate it).
648: *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
649: bytes of space. It is realloc'd as necessary.
650: Return the number of bytes read and stored at *LINEPTR (not including the
651: NUL terminator), or -1 on error or EOF. */
1.1.1.2 ! misho 652: # if @REPLACE_GETLINE@
! 653: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 654: # undef getline
! 655: # define getline rpl_getline
! 656: # endif
! 657: _GL_FUNCDECL_RPL (getline, ssize_t,
! 658: (char **lineptr, size_t *linesize, FILE *stream)
! 659: _GL_ARG_NONNULL ((1, 2, 3)));
! 660: _GL_CXXALIAS_RPL (getline, ssize_t,
! 661: (char **lineptr, size_t *linesize, FILE *stream));
! 662: # else
! 663: # if !@HAVE_DECL_GETLINE@
! 664: _GL_FUNCDECL_SYS (getline, ssize_t,
! 665: (char **lineptr, size_t *linesize, FILE *stream)
! 666: _GL_ARG_NONNULL ((1, 2, 3)));
! 667: # endif
! 668: _GL_CXXALIAS_SYS (getline, ssize_t,
! 669: (char **lineptr, size_t *linesize, FILE *stream));
! 670: # endif
! 671: # if @HAVE_DECL_GETLINE@
! 672: _GL_CXXALIASWARN (getline);
1.1 misho 673: # endif
674: #elif defined GNULIB_POSIXCHECK
675: # undef getline
1.1.1.2 ! misho 676: # if HAVE_RAW_DECL_GETLINE
! 677: _GL_WARN_ON_USE (getline, "getline is unportable - "
! 678: "use gnulib module getline for portability");
! 679: # endif
! 680: #endif
! 681:
! 682: #if @GNULIB_GETS@
! 683: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 684: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 685: # undef gets
! 686: # define gets rpl_gets
! 687: # endif
! 688: _GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
! 689: _GL_CXXALIAS_RPL (gets, char *, (char *s));
! 690: # else
! 691: _GL_CXXALIAS_SYS (gets, char *, (char *s));
! 692: # undef gets
! 693: # endif
! 694: _GL_CXXALIASWARN (gets);
! 695: /* It is very rare that the developer ever has full control of stdin,
! 696: so any use of gets warrants an unconditional warning. Assume it is
! 697: always declared, since it is required by C89. */
! 698: _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
! 699: #endif
! 700:
! 701:
! 702: #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
! 703: struct obstack;
! 704: /* Grow an obstack with formatted output. Return the number of
! 705: bytes added to OBS. No trailing nul byte is added, and the
! 706: object should be closed with obstack_finish before use. Upon
! 707: memory allocation error, call obstack_alloc_failed_handler. Upon
! 708: other error, return -1. */
! 709: # if @REPLACE_OBSTACK_PRINTF@
! 710: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 711: # define obstack_printf rpl_obstack_printf
! 712: # endif
! 713: _GL_FUNCDECL_RPL (obstack_printf, int,
! 714: (struct obstack *obs, const char *format, ...)
! 715: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 716: _GL_ARG_NONNULL ((1, 2)));
! 717: _GL_CXXALIAS_RPL (obstack_printf, int,
! 718: (struct obstack *obs, const char *format, ...));
! 719: # else
! 720: # if !@HAVE_DECL_OBSTACK_PRINTF@
! 721: _GL_FUNCDECL_SYS (obstack_printf, int,
! 722: (struct obstack *obs, const char *format, ...)
! 723: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 724: _GL_ARG_NONNULL ((1, 2)));
! 725: # endif
! 726: _GL_CXXALIAS_SYS (obstack_printf, int,
! 727: (struct obstack *obs, const char *format, ...));
! 728: # endif
! 729: _GL_CXXALIASWARN (obstack_printf);
! 730: # if @REPLACE_OBSTACK_PRINTF@
! 731: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 732: # define obstack_vprintf rpl_obstack_vprintf
! 733: # endif
! 734: _GL_FUNCDECL_RPL (obstack_vprintf, int,
! 735: (struct obstack *obs, const char *format, va_list args)
! 736: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 737: _GL_ARG_NONNULL ((1, 2)));
! 738: _GL_CXXALIAS_RPL (obstack_vprintf, int,
! 739: (struct obstack *obs, const char *format, va_list args));
! 740: # else
! 741: # if !@HAVE_DECL_OBSTACK_PRINTF@
! 742: _GL_FUNCDECL_SYS (obstack_vprintf, int,
! 743: (struct obstack *obs, const char *format, va_list args)
! 744: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 745: _GL_ARG_NONNULL ((1, 2)));
! 746: # endif
! 747: _GL_CXXALIAS_SYS (obstack_vprintf, int,
! 748: (struct obstack *obs, const char *format, va_list args));
! 749: # endif
! 750: _GL_CXXALIASWARN (obstack_vprintf);
1.1 misho 751: #endif
752:
753: #if @GNULIB_PERROR@
754: /* Print a message to standard error, describing the value of ERRNO,
755: (if STRING is not NULL and not empty) prefixed with STRING and ": ",
756: and terminated with a newline. */
1.1.1.2 ! misho 757: # if @REPLACE_PERROR@
! 758: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 759: # define perror rpl_perror
! 760: # endif
! 761: _GL_FUNCDECL_RPL (perror, void, (const char *string));
! 762: _GL_CXXALIAS_RPL (perror, void, (const char *string));
! 763: # else
! 764: _GL_CXXALIAS_SYS (perror, void, (const char *string));
1.1 misho 765: # endif
1.1.1.2 ! misho 766: _GL_CXXALIASWARN (perror);
1.1 misho 767: #elif defined GNULIB_POSIXCHECK
768: # undef perror
1.1.1.2 ! misho 769: /* Assume perror is always declared. */
! 770: _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
! 771: "use gnulib module perror for portability");
1.1 misho 772: #endif
773:
1.1.1.2 ! misho 774: #if @GNULIB_POPEN@
! 775: # if @REPLACE_POPEN@
! 776: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 777: # undef popen
! 778: # define popen rpl_popen
! 779: # endif
! 780: _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
! 781: _GL_ARG_NONNULL ((1, 2)));
! 782: _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
! 783: # else
! 784: _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
! 785: # endif
! 786: _GL_CXXALIASWARN (popen);
! 787: #elif defined GNULIB_POSIXCHECK
! 788: # undef popen
! 789: # if HAVE_RAW_DECL_POPEN
! 790: _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
! 791: "use gnulib module popen or pipe for more portability");
! 792: # endif
! 793: #endif
! 794:
! 795: #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
! 796: # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
! 797: || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
! 798: # if defined __GNUC__
! 799: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 800: /* Don't break __attribute__((format(printf,M,N))). */
! 801: # define printf __printf__
! 802: # endif
! 803: # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
! 804: _GL_FUNCDECL_RPL_1 (__printf__, int,
! 805: (const char *format, ...)
! 806: __asm__ (@ASM_SYMBOL_PREFIX@
! 807: _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
! 808: _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
! 809: _GL_ARG_NONNULL ((1)));
! 810: # else
! 811: _GL_FUNCDECL_RPL_1 (__printf__, int,
! 812: (const char *format, ...)
! 813: __asm__ (@ASM_SYMBOL_PREFIX@
! 814: _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
! 815: _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
! 816: _GL_ARG_NONNULL ((1)));
! 817: # endif
! 818: _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
! 819: # else
! 820: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 821: # define printf rpl_printf
! 822: # endif
! 823: _GL_FUNCDECL_RPL (printf, int,
! 824: (const char *format, ...)
! 825: _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
! 826: _GL_ARG_NONNULL ((1)));
! 827: _GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
! 828: # endif
! 829: # define GNULIB_overrides_printf 1
! 830: # else
! 831: _GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
! 832: # endif
! 833: _GL_CXXALIASWARN (printf);
! 834: #endif
! 835: #if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK
! 836: # if !GNULIB_overrides_printf
! 837: # undef printf
! 838: # endif
! 839: /* Assume printf is always declared. */
! 840: _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
! 841: "use gnulib module printf-posix for portable "
! 842: "POSIX compliance");
! 843: #endif
! 844:
! 845: #if @GNULIB_PUTC@
! 846: # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
! 847: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 848: # undef putc
! 849: # define putc rpl_fputc
! 850: # endif
! 851: _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
! 852: _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
! 853: # else
! 854: _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
! 855: # endif
! 856: _GL_CXXALIASWARN (putc);
! 857: #endif
! 858:
! 859: #if @GNULIB_PUTCHAR@
! 860: # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
! 861: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 862: # undef putchar
! 863: # define putchar rpl_putchar
! 864: # endif
! 865: _GL_FUNCDECL_RPL (putchar, int, (int c));
! 866: _GL_CXXALIAS_RPL (putchar, int, (int c));
! 867: # else
! 868: _GL_CXXALIAS_SYS (putchar, int, (int c));
! 869: # endif
! 870: _GL_CXXALIASWARN (putchar);
! 871: #endif
! 872:
! 873: #if @GNULIB_PUTS@
! 874: # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
! 875: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 876: # undef puts
! 877: # define puts rpl_puts
! 878: # endif
! 879: _GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
! 880: _GL_CXXALIAS_RPL (puts, int, (const char *string));
! 881: # else
! 882: _GL_CXXALIAS_SYS (puts, int, (const char *string));
! 883: # endif
! 884: _GL_CXXALIASWARN (puts);
! 885: #endif
! 886:
! 887: #if @GNULIB_REMOVE@
! 888: # if @REPLACE_REMOVE@
! 889: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 890: # undef remove
! 891: # define remove rpl_remove
! 892: # endif
! 893: _GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
! 894: _GL_CXXALIAS_RPL (remove, int, (const char *name));
! 895: # else
! 896: _GL_CXXALIAS_SYS (remove, int, (const char *name));
! 897: # endif
! 898: _GL_CXXALIASWARN (remove);
! 899: #elif defined GNULIB_POSIXCHECK
! 900: # undef remove
! 901: /* Assume remove is always declared. */
! 902: _GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - "
! 903: "use gnulib module remove for more portability");
! 904: #endif
! 905:
! 906: #if @GNULIB_RENAME@
! 907: # if @REPLACE_RENAME@
! 908: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 909: # undef rename
! 910: # define rename rpl_rename
! 911: # endif
! 912: _GL_FUNCDECL_RPL (rename, int,
! 913: (const char *old_filename, const char *new_filename)
! 914: _GL_ARG_NONNULL ((1, 2)));
! 915: _GL_CXXALIAS_RPL (rename, int,
! 916: (const char *old_filename, const char *new_filename));
! 917: # else
! 918: _GL_CXXALIAS_SYS (rename, int,
! 919: (const char *old_filename, const char *new_filename));
! 920: # endif
! 921: _GL_CXXALIASWARN (rename);
! 922: #elif defined GNULIB_POSIXCHECK
! 923: # undef rename
! 924: /* Assume rename is always declared. */
! 925: _GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
! 926: "use gnulib module rename for more portability");
! 927: #endif
! 928:
! 929: #if @GNULIB_RENAMEAT@
! 930: # if @REPLACE_RENAMEAT@
! 931: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 932: # undef renameat
! 933: # define renameat rpl_renameat
! 934: # endif
! 935: _GL_FUNCDECL_RPL (renameat, int,
! 936: (int fd1, char const *file1, int fd2, char const *file2)
! 937: _GL_ARG_NONNULL ((2, 4)));
! 938: _GL_CXXALIAS_RPL (renameat, int,
! 939: (int fd1, char const *file1, int fd2, char const *file2));
! 940: # else
! 941: # if !@HAVE_RENAMEAT@
! 942: _GL_FUNCDECL_SYS (renameat, int,
! 943: (int fd1, char const *file1, int fd2, char const *file2)
! 944: _GL_ARG_NONNULL ((2, 4)));
! 945: # endif
! 946: _GL_CXXALIAS_SYS (renameat, int,
! 947: (int fd1, char const *file1, int fd2, char const *file2));
! 948: # endif
! 949: _GL_CXXALIASWARN (renameat);
! 950: #elif defined GNULIB_POSIXCHECK
! 951: # undef renameat
! 952: # if HAVE_RAW_DECL_RENAMEAT
! 953: _GL_WARN_ON_USE (renameat, "renameat is not portable - "
! 954: "use gnulib module renameat for portability");
! 955: # endif
! 956: #endif
! 957:
! 958: #if @GNULIB_SCANF@
! 959: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 960: # if defined __GNUC__
! 961: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 962: # undef scanf
! 963: /* Don't break __attribute__((format(scanf,M,N))). */
! 964: # define scanf __scanf__
! 965: # endif
! 966: _GL_FUNCDECL_RPL_1 (__scanf__, int,
! 967: (const char *format, ...)
! 968: __asm__ (@ASM_SYMBOL_PREFIX@
! 969: _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
! 970: _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
! 971: _GL_ARG_NONNULL ((1)));
! 972: _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...));
! 973: # else
! 974: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 975: # undef scanf
! 976: # define scanf rpl_scanf
! 977: # endif
! 978: _GL_FUNCDECL_RPL (scanf, int, (const char *format, ...)
! 979: _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
! 980: _GL_ARG_NONNULL ((1)));
! 981: _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
! 982: # endif
! 983: # else
! 984: _GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
! 985: # endif
! 986: _GL_CXXALIASWARN (scanf);
! 987: #endif
! 988:
! 989: #if @GNULIB_SNPRINTF@
! 990: # if @REPLACE_SNPRINTF@
! 991: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 992: # define snprintf rpl_snprintf
! 993: # endif
! 994: _GL_FUNCDECL_RPL (snprintf, int,
! 995: (char *str, size_t size, const char *format, ...)
! 996: _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
! 997: _GL_ARG_NONNULL ((3)));
! 998: _GL_CXXALIAS_RPL (snprintf, int,
! 999: (char *str, size_t size, const char *format, ...));
! 1000: # else
! 1001: # if !@HAVE_DECL_SNPRINTF@
! 1002: _GL_FUNCDECL_SYS (snprintf, int,
! 1003: (char *str, size_t size, const char *format, ...)
! 1004: _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
! 1005: _GL_ARG_NONNULL ((3)));
! 1006: # endif
! 1007: _GL_CXXALIAS_SYS (snprintf, int,
! 1008: (char *str, size_t size, const char *format, ...));
! 1009: # endif
! 1010: _GL_CXXALIASWARN (snprintf);
! 1011: #elif defined GNULIB_POSIXCHECK
! 1012: # undef snprintf
! 1013: # if HAVE_RAW_DECL_SNPRINTF
! 1014: _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
! 1015: "use gnulib module snprintf for portability");
! 1016: # endif
! 1017: #endif
! 1018:
! 1019: /* Some people would argue that sprintf should be handled like gets
! 1020: (for example, OpenBSD issues a link warning for both functions),
! 1021: since both can cause security holes due to buffer overruns.
! 1022: However, we believe that sprintf can be used safely, and is more
! 1023: efficient than snprintf in those safe cases; and as proof of our
! 1024: belief, we use sprintf in several gnulib modules. So this header
! 1025: intentionally avoids adding a warning to sprintf except when
! 1026: GNULIB_POSIXCHECK is defined. */
! 1027:
! 1028: #if @GNULIB_SPRINTF_POSIX@
! 1029: # if @REPLACE_SPRINTF@
! 1030: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1031: # define sprintf rpl_sprintf
! 1032: # endif
! 1033: _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
! 1034: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 1035: _GL_ARG_NONNULL ((1, 2)));
! 1036: _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
! 1037: # else
! 1038: _GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
! 1039: # endif
! 1040: _GL_CXXALIASWARN (sprintf);
! 1041: #elif defined GNULIB_POSIXCHECK
! 1042: # undef sprintf
! 1043: /* Assume sprintf is always declared. */
! 1044: _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
! 1045: "use gnulib module sprintf-posix for portable "
! 1046: "POSIX compliance");
! 1047: #endif
! 1048:
! 1049: #if @GNULIB_TMPFILE@
! 1050: # if @REPLACE_TMPFILE@
! 1051: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1052: # define tmpfile rpl_tmpfile
! 1053: # endif
! 1054: _GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
! 1055: _GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
! 1056: # else
! 1057: _GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
! 1058: # endif
! 1059: _GL_CXXALIASWARN (tmpfile);
! 1060: #elif defined GNULIB_POSIXCHECK
! 1061: # undef tmpfile
! 1062: # if HAVE_RAW_DECL_TMPFILE
! 1063: _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
! 1064: "use gnulib module tmpfile for portability");
! 1065: # endif
! 1066: #endif
! 1067:
! 1068: #if @GNULIB_VASPRINTF@
! 1069: /* Write formatted output to a string dynamically allocated with malloc().
! 1070: If the memory allocation succeeds, store the address of the string in
! 1071: *RESULT and return the number of resulting bytes, excluding the trailing
! 1072: NUL. Upon memory allocation error, or some other error, return -1. */
! 1073: # if @REPLACE_VASPRINTF@
! 1074: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1075: # define asprintf rpl_asprintf
! 1076: # endif
! 1077: _GL_FUNCDECL_RPL (asprintf, int,
! 1078: (char **result, const char *format, ...)
! 1079: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 1080: _GL_ARG_NONNULL ((1, 2)));
! 1081: _GL_CXXALIAS_RPL (asprintf, int,
! 1082: (char **result, const char *format, ...));
! 1083: # else
! 1084: # if !@HAVE_VASPRINTF@
! 1085: _GL_FUNCDECL_SYS (asprintf, int,
! 1086: (char **result, const char *format, ...)
! 1087: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
! 1088: _GL_ARG_NONNULL ((1, 2)));
! 1089: # endif
! 1090: _GL_CXXALIAS_SYS (asprintf, int,
! 1091: (char **result, const char *format, ...));
! 1092: # endif
! 1093: _GL_CXXALIASWARN (asprintf);
! 1094: # if @REPLACE_VASPRINTF@
! 1095: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1096: # define vasprintf rpl_vasprintf
! 1097: # endif
! 1098: _GL_FUNCDECL_RPL (vasprintf, int,
! 1099: (char **result, const char *format, va_list args)
! 1100: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 1101: _GL_ARG_NONNULL ((1, 2)));
! 1102: _GL_CXXALIAS_RPL (vasprintf, int,
! 1103: (char **result, const char *format, va_list args));
! 1104: # else
! 1105: # if !@HAVE_VASPRINTF@
! 1106: _GL_FUNCDECL_SYS (vasprintf, int,
! 1107: (char **result, const char *format, va_list args)
! 1108: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 1109: _GL_ARG_NONNULL ((1, 2)));
! 1110: # endif
! 1111: _GL_CXXALIAS_SYS (vasprintf, int,
! 1112: (char **result, const char *format, va_list args));
! 1113: # endif
! 1114: _GL_CXXALIASWARN (vasprintf);
! 1115: #endif
! 1116:
! 1117: #if @GNULIB_VDPRINTF@
! 1118: # if @REPLACE_VDPRINTF@
! 1119: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1120: # define vdprintf rpl_vdprintf
! 1121: # endif
! 1122: _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
! 1123: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 1124: _GL_ARG_NONNULL ((2)));
! 1125: _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args));
! 1126: # else
! 1127: # if !@HAVE_VDPRINTF@
! 1128: _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
! 1129: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 1130: _GL_ARG_NONNULL ((2)));
! 1131: # endif
! 1132: /* Need to cast, because on Solaris, the third parameter will likely be
! 1133: __va_list args. */
! 1134: _GL_CXXALIAS_SYS_CAST (vdprintf, int,
! 1135: (int fd, const char *format, va_list args));
! 1136: # endif
! 1137: _GL_CXXALIASWARN (vdprintf);
! 1138: #elif defined GNULIB_POSIXCHECK
! 1139: # undef vdprintf
! 1140: # if HAVE_RAW_DECL_VDPRINTF
! 1141: _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
! 1142: "use gnulib module vdprintf for portability");
! 1143: # endif
1.1 misho 1144: #endif
1145:
1.1.1.2 ! misho 1146: #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
! 1147: # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
! 1148: || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
! 1149: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1150: # define vfprintf rpl_vfprintf
! 1151: # endif
! 1152: # define GNULIB_overrides_vfprintf 1
! 1153: # if @GNULIB_VFPRINTF_POSIX@
! 1154: _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
! 1155: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 1156: _GL_ARG_NONNULL ((1, 2)));
! 1157: # else
! 1158: _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
! 1159: _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
! 1160: _GL_ARG_NONNULL ((1, 2)));
! 1161: # endif
! 1162: _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
! 1163: # else
! 1164: /* Need to cast, because on Solaris, the third parameter is
! 1165: __va_list args
! 1166: and GCC's fixincludes did not change this to __gnuc_va_list. */
! 1167: _GL_CXXALIAS_SYS_CAST (vfprintf, int,
! 1168: (FILE *fp, const char *format, va_list args));
! 1169: # endif
! 1170: _GL_CXXALIASWARN (vfprintf);
! 1171: #endif
! 1172: #if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
! 1173: # if !GNULIB_overrides_vfprintf
! 1174: # undef vfprintf
! 1175: # endif
! 1176: /* Assume vfprintf is always declared. */
! 1177: _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
! 1178: "use gnulib module vfprintf-posix for portable "
! 1179: "POSIX compliance");
! 1180: #endif
! 1181:
! 1182: #if @GNULIB_VFSCANF@
! 1183: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 1184: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1185: # undef vfscanf
! 1186: # define vfscanf rpl_vfscanf
! 1187: # endif
! 1188: _GL_FUNCDECL_RPL (vfscanf, int,
! 1189: (FILE *stream, const char *format, va_list args)
! 1190: _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
! 1191: _GL_ARG_NONNULL ((1, 2)));
! 1192: _GL_CXXALIAS_RPL (vfscanf, int,
! 1193: (FILE *stream, const char *format, va_list args));
! 1194: # else
! 1195: _GL_CXXALIAS_SYS (vfscanf, int,
! 1196: (FILE *stream, const char *format, va_list args));
! 1197: # endif
! 1198: _GL_CXXALIASWARN (vfscanf);
! 1199: #endif
! 1200:
! 1201: #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@
! 1202: # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \
! 1203: || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
! 1204: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1205: # define vprintf rpl_vprintf
! 1206: # endif
! 1207: # define GNULIB_overrides_vprintf 1
! 1208: # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
! 1209: _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
! 1210: _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
! 1211: _GL_ARG_NONNULL ((1)));
! 1212: # else
! 1213: _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
! 1214: _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
! 1215: _GL_ARG_NONNULL ((1)));
! 1216: # endif
! 1217: _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
! 1218: # else
! 1219: /* Need to cast, because on Solaris, the second parameter is
! 1220: __va_list args
! 1221: and GCC's fixincludes did not change this to __gnuc_va_list. */
! 1222: _GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
! 1223: # endif
! 1224: _GL_CXXALIASWARN (vprintf);
! 1225: #endif
! 1226: #if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
! 1227: # if !GNULIB_overrides_vprintf
! 1228: # undef vprintf
! 1229: # endif
! 1230: /* Assume vprintf is always declared. */
! 1231: _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
! 1232: "use gnulib module vprintf-posix for portable "
! 1233: "POSIX compliance");
! 1234: #endif
! 1235:
! 1236: #if @GNULIB_VSCANF@
! 1237: # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
! 1238: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1239: # undef vscanf
! 1240: # define vscanf rpl_vscanf
! 1241: # endif
! 1242: _GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args)
! 1243: _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
! 1244: _GL_ARG_NONNULL ((1)));
! 1245: _GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args));
! 1246: # else
! 1247: _GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args));
! 1248: # endif
! 1249: _GL_CXXALIASWARN (vscanf);
! 1250: #endif
! 1251:
! 1252: #if @GNULIB_VSNPRINTF@
! 1253: # if @REPLACE_VSNPRINTF@
! 1254: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1255: # define vsnprintf rpl_vsnprintf
! 1256: # endif
! 1257: _GL_FUNCDECL_RPL (vsnprintf, int,
! 1258: (char *str, size_t size, const char *format, va_list args)
! 1259: _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
! 1260: _GL_ARG_NONNULL ((3)));
! 1261: _GL_CXXALIAS_RPL (vsnprintf, int,
! 1262: (char *str, size_t size, const char *format, va_list args));
! 1263: # else
! 1264: # if !@HAVE_DECL_VSNPRINTF@
! 1265: _GL_FUNCDECL_SYS (vsnprintf, int,
! 1266: (char *str, size_t size, const char *format, va_list args)
! 1267: _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
! 1268: _GL_ARG_NONNULL ((3)));
! 1269: # endif
! 1270: _GL_CXXALIAS_SYS (vsnprintf, int,
! 1271: (char *str, size_t size, const char *format, va_list args));
! 1272: # endif
! 1273: _GL_CXXALIASWARN (vsnprintf);
! 1274: #elif defined GNULIB_POSIXCHECK
! 1275: # undef vsnprintf
! 1276: # if HAVE_RAW_DECL_VSNPRINTF
! 1277: _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
! 1278: "use gnulib module vsnprintf for portability");
! 1279: # endif
! 1280: #endif
! 1281:
! 1282: #if @GNULIB_VSPRINTF_POSIX@
! 1283: # if @REPLACE_VSPRINTF@
! 1284: # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
! 1285: # define vsprintf rpl_vsprintf
! 1286: # endif
! 1287: _GL_FUNCDECL_RPL (vsprintf, int,
! 1288: (char *str, const char *format, va_list args)
! 1289: _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
! 1290: _GL_ARG_NONNULL ((1, 2)));
! 1291: _GL_CXXALIAS_RPL (vsprintf, int,
! 1292: (char *str, const char *format, va_list args));
! 1293: # else
! 1294: /* Need to cast, because on Solaris, the third parameter is
! 1295: __va_list args
! 1296: and GCC's fixincludes did not change this to __gnuc_va_list. */
! 1297: _GL_CXXALIAS_SYS_CAST (vsprintf, int,
! 1298: (char *str, const char *format, va_list args));
! 1299: # endif
! 1300: _GL_CXXALIASWARN (vsprintf);
! 1301: #elif defined GNULIB_POSIXCHECK
! 1302: # undef vsprintf
! 1303: /* Assume vsprintf is always declared. */
! 1304: _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
! 1305: "use gnulib module vsprintf-posix for portable "
! 1306: "POSIX compliance");
! 1307: #endif
! 1308:
! 1309:
! 1310: #endif /* _@GUARD_PREFIX@_STDIO_H */
! 1311: #endif /* _@GUARD_PREFIX@_STDIO_H */
1.1 misho 1312: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>