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>