Annotation of embedaddon/libiconv/srclib/stdio.in.h, revision 1.1
1.1 ! misho 1: /* A GNU-like <stdio.h>.
! 2:
! 3: Copyright (C) 2004, 2007-2009 Free Software Foundation, Inc.
! 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
! 22:
! 23: #if defined __need_FILE || defined __need___FILE
! 24: /* Special invocation convention inside glibc header files. */
! 25:
! 26: #@INCLUDE_NEXT@ @NEXT_STDIO_H@
! 27:
! 28: #else
! 29: /* Normal invocation convention. */
! 30:
! 31: #ifndef _GL_STDIO_H
! 32:
! 33: /* The include_next requires a split double-inclusion guard. */
! 34: #@INCLUDE_NEXT@ @NEXT_STDIO_H@
! 35:
! 36: #ifndef _GL_STDIO_H
! 37: #define _GL_STDIO_H
! 38:
! 39: #include <stdarg.h>
! 40: #include <stddef.h>
! 41:
! 42: #if (@GNULIB_FSEEKO@ && @REPLACE_FSEEKO@) \
! 43: || (@GNULIB_FTELLO@ && @REPLACE_FTELLO@) \
! 44: || (@GNULIB_GETDELIM@ && !@HAVE_DECL_GETDELIM@) \
! 45: || (@GNULIB_GETLINE@ && (!@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@))
! 46: /* Get off_t and ssize_t. */
! 47: # include <sys/types.h>
! 48: #endif
! 49:
! 50: #ifndef __attribute__
! 51: /* This feature is available in gcc versions 2.5 and later. */
! 52: # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
! 53: # define __attribute__(Spec) /* empty */
! 54: # endif
! 55: /* The __-protected variants of `format' and `printf' attributes
! 56: are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
! 57: # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
! 58: # define __format__ format
! 59: # define __printf__ printf
! 60: # endif
! 61: #endif
! 62:
! 63:
! 64: /* The definition of GL_LINK_WARNING is copied here. */
! 65:
! 66:
! 67: #ifdef __cplusplus
! 68: extern "C" {
! 69: #endif
! 70:
! 71:
! 72: #if @GNULIB_FPRINTF_POSIX@
! 73: # if @REPLACE_FPRINTF@
! 74: # define fprintf rpl_fprintf
! 75: extern int fprintf (FILE *fp, const char *format, ...)
! 76: __attribute__ ((__format__ (__printf__, 2, 3)));
! 77: # endif
! 78: #elif @GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 79: # define fprintf rpl_fprintf
! 80: extern int fprintf (FILE *fp, const char *format, ...)
! 81: __attribute__ ((__format__ (__printf__, 2, 3)));
! 82: #elif defined GNULIB_POSIXCHECK
! 83: # undef fprintf
! 84: # define fprintf \
! 85: (GL_LINK_WARNING ("fprintf is not always POSIX compliant - " \
! 86: "use gnulib module fprintf-posix for portable " \
! 87: "POSIX compliance"), \
! 88: fprintf)
! 89: #endif
! 90:
! 91: #if @GNULIB_VFPRINTF_POSIX@
! 92: # if @REPLACE_VFPRINTF@
! 93: # define vfprintf rpl_vfprintf
! 94: extern int vfprintf (FILE *fp, const char *format, va_list args)
! 95: __attribute__ ((__format__ (__printf__, 2, 0)));
! 96: # endif
! 97: #elif @GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 98: # define vfprintf rpl_vfprintf
! 99: extern int vfprintf (FILE *fp, const char *format, va_list args)
! 100: __attribute__ ((__format__ (__printf__, 2, 0)));
! 101: #elif defined GNULIB_POSIXCHECK
! 102: # undef vfprintf
! 103: # define vfprintf(s,f,a) \
! 104: (GL_LINK_WARNING ("vfprintf is not always POSIX compliant - " \
! 105: "use gnulib module vfprintf-posix for portable " \
! 106: "POSIX compliance"), \
! 107: vfprintf (s, f, a))
! 108: #endif
! 109:
! 110: #if @GNULIB_PRINTF_POSIX@
! 111: # if @REPLACE_PRINTF@
! 112: /* Don't break __attribute__((format(printf,M,N))). */
! 113: # define printf __printf__
! 114: extern int printf (const char *format, ...)
! 115: __attribute__ ((__format__ (__printf__, 1, 2)));
! 116: # endif
! 117: #elif @GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 118: /* Don't break __attribute__((format(printf,M,N))). */
! 119: # define printf __printf__
! 120: extern int printf (const char *format, ...)
! 121: __attribute__ ((__format__ (__printf__, 1, 2)));
! 122: #elif defined GNULIB_POSIXCHECK
! 123: # undef printf
! 124: # define printf \
! 125: (GL_LINK_WARNING ("printf is not always POSIX compliant - " \
! 126: "use gnulib module printf-posix for portable " \
! 127: "POSIX compliance"), \
! 128: printf)
! 129: /* Don't break __attribute__((format(printf,M,N))). */
! 130: # define format(kind,m,n) format (__##kind##__, m, n)
! 131: # define __format__(kind,m,n) __format__ (__##kind##__, m, n)
! 132: # define ____printf____ __printf__
! 133: # define ____scanf____ __scanf__
! 134: # define ____strftime____ __strftime__
! 135: # define ____strfmon____ __strfmon__
! 136: #endif
! 137:
! 138: #if @GNULIB_VPRINTF_POSIX@
! 139: # if @REPLACE_VPRINTF@
! 140: # define vprintf rpl_vprintf
! 141: extern int vprintf (const char *format, va_list args)
! 142: __attribute__ ((__format__ (__printf__, 1, 0)));
! 143: # endif
! 144: #elif @GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 145: # define vprintf rpl_vprintf
! 146: extern int vprintf (const char *format, va_list args)
! 147: __attribute__ ((__format__ (__printf__, 1, 0)));
! 148: #elif defined GNULIB_POSIXCHECK
! 149: # undef vprintf
! 150: # define vprintf(f,a) \
! 151: (GL_LINK_WARNING ("vprintf is not always POSIX compliant - " \
! 152: "use gnulib module vprintf-posix for portable " \
! 153: "POSIX compliance"), \
! 154: vprintf (f, a))
! 155: #endif
! 156:
! 157: #if @GNULIB_SNPRINTF@
! 158: # if @REPLACE_SNPRINTF@
! 159: # define snprintf rpl_snprintf
! 160: # endif
! 161: # if @REPLACE_SNPRINTF@ || !@HAVE_DECL_SNPRINTF@
! 162: extern int snprintf (char *str, size_t size, const char *format, ...)
! 163: __attribute__ ((__format__ (__printf__, 3, 4)));
! 164: # endif
! 165: #elif defined GNULIB_POSIXCHECK
! 166: # undef snprintf
! 167: # define snprintf \
! 168: (GL_LINK_WARNING ("snprintf is unportable - " \
! 169: "use gnulib module snprintf for portability"), \
! 170: snprintf)
! 171: #endif
! 172:
! 173: #if @GNULIB_VSNPRINTF@
! 174: # if @REPLACE_VSNPRINTF@
! 175: # define vsnprintf rpl_vsnprintf
! 176: # endif
! 177: # if @REPLACE_VSNPRINTF@ || !@HAVE_DECL_VSNPRINTF@
! 178: extern int vsnprintf (char *str, size_t size, const char *format, va_list args)
! 179: __attribute__ ((__format__ (__printf__, 3, 0)));
! 180: # endif
! 181: #elif defined GNULIB_POSIXCHECK
! 182: # undef vsnprintf
! 183: # define vsnprintf(b,s,f,a) \
! 184: (GL_LINK_WARNING ("vsnprintf is unportable - " \
! 185: "use gnulib module vsnprintf for portability"), \
! 186: vsnprintf (b, s, f, a))
! 187: #endif
! 188:
! 189: #if @GNULIB_SPRINTF_POSIX@
! 190: # if @REPLACE_SPRINTF@
! 191: # define sprintf rpl_sprintf
! 192: extern int sprintf (char *str, const char *format, ...)
! 193: __attribute__ ((__format__ (__printf__, 2, 3)));
! 194: # endif
! 195: #elif defined GNULIB_POSIXCHECK
! 196: # undef sprintf
! 197: # define sprintf \
! 198: (GL_LINK_WARNING ("sprintf is not always POSIX compliant - " \
! 199: "use gnulib module sprintf-posix for portable " \
! 200: "POSIX compliance"), \
! 201: sprintf)
! 202: #endif
! 203:
! 204: #if @GNULIB_VSPRINTF_POSIX@
! 205: # if @REPLACE_VSPRINTF@
! 206: # define vsprintf rpl_vsprintf
! 207: extern int vsprintf (char *str, const char *format, va_list args)
! 208: __attribute__ ((__format__ (__printf__, 2, 0)));
! 209: # endif
! 210: #elif defined GNULIB_POSIXCHECK
! 211: # undef vsprintf
! 212: # define vsprintf(b,f,a) \
! 213: (GL_LINK_WARNING ("vsprintf is not always POSIX compliant - " \
! 214: "use gnulib module vsprintf-posix for portable " \
! 215: "POSIX compliance"), \
! 216: vsprintf (b, f, a))
! 217: #endif
! 218:
! 219: #if @GNULIB_DPRINTF@
! 220: # if @REPLACE_DPRINTF@
! 221: # define dprintf rpl_dprintf
! 222: # endif
! 223: # if @REPLACE_DPRINTF@ || !@HAVE_DPRINTF@
! 224: extern int dprintf (int fd, const char *format, ...)
! 225: __attribute__ ((__format__ (__printf__, 2, 3)));
! 226: # endif
! 227: #elif defined GNULIB_POSIXCHECK
! 228: # undef dprintf
! 229: # define dprintf(d,f,a) \
! 230: (GL_LINK_WARNING ("dprintf is unportable - " \
! 231: "use gnulib module dprintf for portability"), \
! 232: dprintf (d, f, a))
! 233: #endif
! 234:
! 235: #if @GNULIB_VDPRINTF@
! 236: # if @REPLACE_VDPRINTF@
! 237: # define vdprintf rpl_vdprintf
! 238: # endif
! 239: # if @REPLACE_VDPRINTF@ || !@HAVE_VDPRINTF@
! 240: extern int vdprintf (int fd, const char *format, va_list args)
! 241: __attribute__ ((__format__ (__printf__, 2, 0)));
! 242: # endif
! 243: #elif defined GNULIB_POSIXCHECK
! 244: # undef vdprintf
! 245: # define vdprintf(d,f,a) \
! 246: (GL_LINK_WARNING ("vdprintf is unportable - " \
! 247: "use gnulib module vdprintf for portability"), \
! 248: vdprintf (d, f, a))
! 249: #endif
! 250:
! 251: #if @GNULIB_VASPRINTF@
! 252: # if @REPLACE_VASPRINTF@
! 253: # define asprintf rpl_asprintf
! 254: # define vasprintf rpl_vasprintf
! 255: # endif
! 256: # if @REPLACE_VASPRINTF@ || !@HAVE_VASPRINTF@
! 257: /* Write formatted output to a string dynamically allocated with malloc().
! 258: If the memory allocation succeeds, store the address of the string in
! 259: *RESULT and return the number of resulting bytes, excluding the trailing
! 260: NUL. Upon memory allocation error, or some other error, return -1. */
! 261: extern int asprintf (char **result, const char *format, ...)
! 262: __attribute__ ((__format__ (__printf__, 2, 3)));
! 263: extern int vasprintf (char **result, const char *format, va_list args)
! 264: __attribute__ ((__format__ (__printf__, 2, 0)));
! 265: # endif
! 266: #endif
! 267:
! 268: #if @GNULIB_OBSTACK_PRINTF@
! 269: # if @REPLACE_OBSTACK_PRINTF@
! 270: # define obstack_printf rpl_osbtack_printf
! 271: # define obstack_vprintf rpl_obstack_vprintf
! 272: # endif
! 273: # if @REPLACE_OBSTACK_PRINTF@ || !@HAVE_DECL_OBSTACK_PRINTF@
! 274: struct obstack;
! 275: /* Grow an obstack with formatted output. Return the number of
! 276: bytes added to OBS. No trailing nul byte is added, and the
! 277: object should be closed with obstack_finish before use. Upon
! 278: memory allocation error, call obstack_alloc_failed_handler. Upon
! 279: other error, return -1. */
! 280: extern int obstack_printf (struct obstack *obs, const char *format, ...)
! 281: __attribute__ ((__format__ (__printf__, 2, 3)));
! 282: extern int obstack_vprintf (struct obstack *obs, const char *format,
! 283: va_list args)
! 284: __attribute__ ((__format__ (__printf__, 2, 0)));
! 285: # endif
! 286: #endif
! 287:
! 288: #if @GNULIB_FOPEN@
! 289: # if @REPLACE_FOPEN@
! 290: # undef fopen
! 291: # define fopen rpl_fopen
! 292: extern FILE * fopen (const char *filename, const char *mode);
! 293: # endif
! 294: #elif defined GNULIB_POSIXCHECK
! 295: # undef fopen
! 296: # define fopen(f,m) \
! 297: (GL_LINK_WARNING ("fopen on Win32 platforms is not POSIX compatible - " \
! 298: "use gnulib module fopen for portability"), \
! 299: fopen (f, m))
! 300: #endif
! 301:
! 302: #if @GNULIB_FREOPEN@
! 303: # if @REPLACE_FREOPEN@
! 304: # undef freopen
! 305: # define freopen rpl_freopen
! 306: extern FILE * freopen (const char *filename, const char *mode, FILE *stream);
! 307: # endif
! 308: #elif defined GNULIB_POSIXCHECK
! 309: # undef freopen
! 310: # define freopen(f,m,s) \
! 311: (GL_LINK_WARNING ("freopen on Win32 platforms is not POSIX compatible - " \
! 312: "use gnulib module freopen for portability"), \
! 313: freopen (f, m, s))
! 314: #endif
! 315:
! 316: #if @GNULIB_FSEEKO@
! 317: # if @REPLACE_FSEEKO@
! 318: /* Provide fseek, fseeko functions that are aware of a preceding
! 319: fflush(), and which detect pipes. */
! 320: # define fseeko rpl_fseeko
! 321: extern int fseeko (FILE *fp, off_t offset, int whence);
! 322: # define fseek(fp, offset, whence) fseeko (fp, (off_t)(offset), whence)
! 323: # endif
! 324: #elif defined GNULIB_POSIXCHECK
! 325: # undef fseeko
! 326: # define fseeko(f,o,w) \
! 327: (GL_LINK_WARNING ("fseeko is unportable - " \
! 328: "use gnulib module fseeko for portability"), \
! 329: fseeko (f, o, w))
! 330: #endif
! 331:
! 332: #if @GNULIB_FSEEK@ && @REPLACE_FSEEK@
! 333: extern int rpl_fseek (FILE *fp, long offset, int whence);
! 334: # undef fseek
! 335: # if defined GNULIB_POSIXCHECK
! 336: # define fseek(f,o,w) \
! 337: (GL_LINK_WARNING ("fseek cannot handle files larger than 4 GB " \
! 338: "on 32-bit platforms - " \
! 339: "use fseeko function for handling of large files"), \
! 340: rpl_fseek (f, o, w))
! 341: # else
! 342: # define fseek rpl_fseek
! 343: # endif
! 344: #elif defined GNULIB_POSIXCHECK
! 345: # ifndef fseek
! 346: # define fseek(f,o,w) \
! 347: (GL_LINK_WARNING ("fseek cannot handle files larger than 4 GB " \
! 348: "on 32-bit platforms - " \
! 349: "use fseeko function for handling of large files"), \
! 350: fseek (f, o, w))
! 351: # endif
! 352: #endif
! 353:
! 354: #if @GNULIB_FTELLO@
! 355: # if @REPLACE_FTELLO@
! 356: # define ftello rpl_ftello
! 357: extern off_t ftello (FILE *fp);
! 358: # define ftell(fp) ftello (fp)
! 359: # endif
! 360: #elif defined GNULIB_POSIXCHECK
! 361: # undef ftello
! 362: # define ftello(f) \
! 363: (GL_LINK_WARNING ("ftello is unportable - " \
! 364: "use gnulib module ftello for portability"), \
! 365: ftello (f))
! 366: #endif
! 367:
! 368: #if @GNULIB_FTELL@ && @REPLACE_FTELL@
! 369: extern long rpl_ftell (FILE *fp);
! 370: # undef ftell
! 371: # if GNULIB_POSIXCHECK
! 372: # define ftell(f) \
! 373: (GL_LINK_WARNING ("ftell cannot handle files larger than 4 GB " \
! 374: "on 32-bit platforms - " \
! 375: "use ftello function for handling of large files"), \
! 376: rpl_ftell (f))
! 377: # else
! 378: # define ftell rpl_ftell
! 379: # endif
! 380: #elif defined GNULIB_POSIXCHECK
! 381: # ifndef ftell
! 382: # define ftell(f) \
! 383: (GL_LINK_WARNING ("ftell cannot handle files larger than 4 GB " \
! 384: "on 32-bit platforms - " \
! 385: "use ftello function for handling of large files"), \
! 386: ftell (f))
! 387: # endif
! 388: #endif
! 389:
! 390: #if @GNULIB_FFLUSH@
! 391: # if @REPLACE_FFLUSH@
! 392: # define fflush rpl_fflush
! 393: /* Flush all pending data on STREAM according to POSIX rules. Both
! 394: output and seekable input streams are supported.
! 395: Note! LOSS OF DATA can occur if fflush is applied on an input stream
! 396: that is _not_seekable_ or on an update stream that is _not_seekable_
! 397: and in which the most recent operation was input. Seekability can
! 398: be tested with lseek(fileno(fp),0,SEEK_CUR). */
! 399: extern int fflush (FILE *gl_stream);
! 400: # endif
! 401: #elif defined GNULIB_POSIXCHECK
! 402: # undef fflush
! 403: # define fflush(f) \
! 404: (GL_LINK_WARNING ("fflush is not always POSIX compliant - " \
! 405: "use gnulib module fflush for portable " \
! 406: "POSIX compliance"), \
! 407: fflush (f))
! 408: #endif
! 409:
! 410: #if @GNULIB_FPURGE@
! 411: # if @REPLACE_FPURGE@
! 412: # define fpurge rpl_fpurge
! 413: # endif
! 414: # if @REPLACE_FPURGE@ || !@HAVE_DECL_FPURGE@
! 415: /* Discard all pending buffered I/O data on STREAM.
! 416: STREAM must not be wide-character oriented.
! 417: Return 0 if successful. Upon error, return -1 and set errno. */
! 418: extern int fpurge (FILE *gl_stream);
! 419: # endif
! 420: #elif defined GNULIB_POSIXCHECK
! 421: # undef fpurge
! 422: # define fpurge(f) \
! 423: (GL_LINK_WARNING ("fpurge is not always present - " \
! 424: "use gnulib module fpurge for portability"), \
! 425: fpurge (f))
! 426: #endif
! 427:
! 428: #if @GNULIB_FCLOSE@
! 429: # if @REPLACE_FCLOSE@
! 430: # define fclose rpl_fclose
! 431: /* Close STREAM and its underlying file descriptor. */
! 432: extern int fclose (FILE *stream);
! 433: # endif
! 434: #elif defined GNULIB_POSIXCHECK
! 435: # undef fclose
! 436: # define fclose(f) \
! 437: (GL_LINK_WARNING ("fclose is not always POSIX compliant - " \
! 438: "use gnulib module fclose for portable " \
! 439: "POSIX compliance"), \
! 440: fclose (f))
! 441: #endif
! 442:
! 443: #if @GNULIB_FPUTC@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 444: # undef fputc
! 445: # define fputc rpl_fputc
! 446: extern int fputc (int c, FILE *stream);
! 447: #endif
! 448:
! 449: #if @GNULIB_PUTC@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 450: # undef putc
! 451: # define putc rpl_fputc
! 452: extern int putc (int c, FILE *stream);
! 453: #endif
! 454:
! 455: #if @GNULIB_PUTCHAR@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 456: # undef putchar
! 457: # define putchar rpl_putchar
! 458: extern int putchar (int c);
! 459: #endif
! 460:
! 461: #if @GNULIB_FPUTS@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 462: # undef fputs
! 463: # define fputs rpl_fputs
! 464: extern int fputs (const char *string, FILE *stream);
! 465: #endif
! 466:
! 467: #if @GNULIB_PUTS@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 468: # undef puts
! 469: # define puts rpl_puts
! 470: extern int puts (const char *string);
! 471: #endif
! 472:
! 473: #if @GNULIB_FWRITE@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@
! 474: # undef fwrite
! 475: # define fwrite rpl_fwrite
! 476: extern size_t fwrite (const void *ptr, size_t s, size_t n, FILE *stream);
! 477: #endif
! 478:
! 479: #if @GNULIB_GETDELIM@
! 480: # if !@HAVE_DECL_GETDELIM@
! 481: /* Read input, up to (and including) the next occurrence of DELIMITER, from
! 482: STREAM, store it in *LINEPTR (and NUL-terminate it).
! 483: *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
! 484: bytes of space. It is realloc'd as necessary.
! 485: Return the number of bytes read and stored at *LINEPTR (not including the
! 486: NUL terminator), or -1 on error or EOF. */
! 487: extern ssize_t getdelim (char **lineptr, size_t *linesize, int delimiter,
! 488: FILE *stream);
! 489: # endif
! 490: #elif defined GNULIB_POSIXCHECK
! 491: # undef getdelim
! 492: # define getdelim(l, s, d, f) \
! 493: (GL_LINK_WARNING ("getdelim is unportable - " \
! 494: "use gnulib module getdelim for portability"), \
! 495: getdelim (l, s, d, f))
! 496: #endif
! 497:
! 498: #if @GNULIB_GETLINE@
! 499: # if @REPLACE_GETLINE@
! 500: # undef getline
! 501: # define getline rpl_getline
! 502: # endif
! 503: # if !@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@
! 504: /* Read a line, up to (and including) the next newline, from STREAM, store it
! 505: in *LINEPTR (and NUL-terminate it).
! 506: *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
! 507: bytes of space. It is realloc'd as necessary.
! 508: Return the number of bytes read and stored at *LINEPTR (not including the
! 509: NUL terminator), or -1 on error or EOF. */
! 510: extern ssize_t getline (char **lineptr, size_t *linesize, FILE *stream);
! 511: # endif
! 512: #elif defined GNULIB_POSIXCHECK
! 513: # undef getline
! 514: # define getline(l, s, f) \
! 515: (GL_LINK_WARNING ("getline is unportable - " \
! 516: "use gnulib module getline for portability"), \
! 517: getline (l, s, f))
! 518: #endif
! 519:
! 520: #if @GNULIB_PERROR@
! 521: # if @REPLACE_PERROR@
! 522: # define perror rpl_perror
! 523: /* Print a message to standard error, describing the value of ERRNO,
! 524: (if STRING is not NULL and not empty) prefixed with STRING and ": ",
! 525: and terminated with a newline. */
! 526: extern void perror (const char *string);
! 527: # endif
! 528: #elif defined GNULIB_POSIXCHECK
! 529: # undef perror
! 530: # define perror(s) \
! 531: (GL_LINK_WARNING ("perror is not always POSIX compliant - " \
! 532: "use gnulib module perror for portability"), \
! 533: perror (s))
! 534: #endif
! 535:
! 536: #ifdef __cplusplus
! 537: }
! 538: #endif
! 539:
! 540: #endif /* _GL_STDIO_H */
! 541: #endif /* _GL_STDIO_H */
! 542: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>