Annotation of embedaddon/libiconv/srclib/stdio.in.h, revision 1.1.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>