File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / stdio.in.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:57:48 2012 UTC (12 years, 5 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_13_1, HEAD
libiconv

    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>