File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / stdio.in.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 09:29:43 2012 UTC (12 years, 1 month ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_14p0, v1_14, HEAD
libiconv v1.14

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>