Diff for /embedaddon/libiconv/srclib/stdio.in.h between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2012/05/29 09:29:43 version 1.1.1.3, 2021/03/17 13:38:46
Line 1 Line 1
 /* A GNU-like <stdio.h>.  /* A GNU-like <stdio.h>.
   
   Copyright (C) 2004, 2007-2011 Free Software Foundation, Inc.   Copyright (C) 2004, 2007-2019 Free Software Foundation, Inc.
   
    This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
Line 13 Line 13
    GNU General Public License for more details.     GNU General Public License for more details.
   
    You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,   along with this program; if not, see <https://www.gnu.org/licenses/>.  */
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */ 
   
 #if __GNUC__ >= 3  #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@  @PRAGMA_SYSTEM_HEADER@
Line 53 Line 52
 #include <stddef.h>  #include <stddef.h>
   
 /* Get off_t and ssize_t.  Needed on many systems, including glibc 2.8  /* Get off_t and ssize_t.  Needed on many systems, including glibc 2.8
   and eglibc 2.11.2.  */   and eglibc 2.11.2.
    May also define off_t to a 64-bit type on native Windows.  */
 #include <sys/types.h>  #include <sys/types.h>
   
 /* The __attribute__ feature is available in gcc versions 2.5 and later.  /* The __attribute__ feature is available in gcc versions 2.5 and later.
Line 84 Line 84
    except that it indicates to GCC that the supported format string directives     except that it indicates to GCC that the supported format string directives
    are the ones of the system printf(), rather than the ones standardized by     are the ones of the system printf(), rather than the ones standardized by
    ISO C99 and POSIX.  */     ISO C99 and POSIX.  */
#define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
 # define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
   _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument)
 #else
 # define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
   _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))    _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
   #endif
   
 /* _GL_ATTRIBUTE_FORMAT_SCANF  /* _GL_ATTRIBUTE_FORMAT_SCANF
    indicates to GCC that the function takes a format string and arguments,     indicates to GCC that the function takes a format string and arguments,
Line 106 Line 111
 #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \  #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
   _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))    _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
   
/* Solaris 10 declares renameat in <unistd.h>, not in <stdio.h>.  *//* Solaris 10 and NetBSD 7.0 declare renameat in <unistd.h>, not in <stdio.h>.  */
 /* But in any case avoid namespace pollution on glibc systems.  */  /* But in any case avoid namespace pollution on glibc systems.  */
#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __sun \#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \
     && ! defined __GLIBC__      && ! defined __GLIBC__
 # include <unistd.h>  # include <unistd.h>
 #endif  #endif
   
   /* Android 4.3 declares renameat in <sys/stat.h>, not in <stdio.h>.  */
   /* But in any case avoid namespace pollution on glibc systems.  */
   #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
       && ! defined __GLIBC__
   # include <sys/stat.h>
   #endif
   
   /* MSVC declares 'perror' in <stdlib.h>, not in <stdio.h>.  We must include
      it before we  #define perror rpl_perror.  */
   /* But in any case avoid namespace pollution on glibc systems.  */
   #if (@GNULIB_PERROR@ || defined GNULIB_POSIXCHECK) \
       && (defined _WIN32 && ! defined __CYGWIN__) \
       && ! defined __GLIBC__
   # include <stdlib.h>
   #endif
   
   /* MSVC declares 'remove' in <io.h>, not in <stdio.h>.  We must include
      it before we  #define remove rpl_remove.  */
   /* MSVC declares 'rename' in <io.h>, not in <stdio.h>.  We must include
      it before we  #define rename rpl_rename.  */
   /* But in any case avoid namespace pollution on glibc systems.  */
   #if (@GNULIB_REMOVE@ || @GNULIB_RENAME@ || defined GNULIB_POSIXCHECK) \
       && (defined _WIN32 && ! defined __CYGWIN__) \
       && ! defined __GLIBC__
   # include <io.h>
   #endif
   
   
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */  /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
   
 /* The definition of _GL_ARG_NONNULL is copied here.  */  /* The definition of _GL_ARG_NONNULL is copied here.  */
Line 124 Line 156
 #define _GL_STDIO_STRINGIZE(token) #token  #define _GL_STDIO_STRINGIZE(token) #token
 #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)  #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
   
   /* When also using extern inline, suppress the use of static inline in
      standard headers of problematic Apple configurations, as Libc at
      least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
      <https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
      Perhaps Apple will fix this some day.  */
   #if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
        && defined __GNUC__ && defined __STDC__)
   # undef putc_unlocked
   #endif
   
 #if @GNULIB_DPRINTF@  #if @GNULIB_DPRINTF@
 # if @REPLACE_DPRINTF@  # if @REPLACE_DPRINTF@
Line 170  _GL_WARN_ON_USE (fclose, "fclose is not always POSIX c Line 211  _GL_WARN_ON_USE (fclose, "fclose is not always POSIX c
                  "use gnulib module fclose for portable POSIX compliance");                   "use gnulib module fclose for portable POSIX compliance");
 #endif  #endif
   
   #if @GNULIB_FDOPEN@
   # if @REPLACE_FDOPEN@
   #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
   #   undef fdopen
   #   define fdopen rpl_fdopen
   #  endif
   _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
                                     _GL_ARG_NONNULL ((2)));
   _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
   # else
   _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
   # endif
   _GL_CXXALIASWARN (fdopen);
   #elif defined GNULIB_POSIXCHECK
   # undef fdopen
   /* Assume fdopen is always declared.  */
   _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - "
                    "use gnulib module fdopen for portability");
   #endif
   
 #if @GNULIB_FFLUSH@  #if @GNULIB_FFLUSH@
 /* Flush all pending data on STREAM according to POSIX rules.  Both  /* Flush all pending data on STREAM according to POSIX rules.  Both
    output and seekable input streams are supported.     output and seekable input streams are supported.
Line 239  _GL_CXXALIASWARN (fopen); Line 300  _GL_CXXALIASWARN (fopen);
 #elif defined GNULIB_POSIXCHECK  #elif defined GNULIB_POSIXCHECK
 # undef fopen  # undef fopen
 /* Assume fopen is always declared.  */  /* Assume fopen is always declared.  */
_GL_WARN_ON_USE (fopen, "fopen on Win32 platforms is not POSIX compatible - "_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - "
                  "use gnulib module fopen for portability");                   "use gnulib module fopen for portability");
 #endif  #endif
   
Line 367  _GL_CXXALIASWARN (freopen); Line 428  _GL_CXXALIASWARN (freopen);
 # undef freopen  # undef freopen
 /* Assume freopen is always declared.  */  /* Assume freopen is always declared.  */
 _GL_WARN_ON_USE (freopen,  _GL_WARN_ON_USE (freopen,
                 "freopen on Win32 platforms is not POSIX compatible - "                 "freopen on native Windows platforms is not POSIX compliant - "
                  "use gnulib module freopen for portability");                   "use gnulib module freopen for portability");
 #endif  #endif
   
Line 555  _GL_CXXALIAS_RPL (fwrite, size_t, Line 616  _GL_CXXALIAS_RPL (fwrite, size_t,
 _GL_CXXALIAS_SYS (fwrite, size_t,  _GL_CXXALIAS_SYS (fwrite, size_t,
                   (const void *ptr, size_t s, size_t n, FILE *stream));                    (const void *ptr, size_t s, size_t n, FILE *stream));
   
/* Work around glibc bug 11959/* Work around bug 11959 when fortifying glibc 2.4 through 2.15
   <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,   <https://sourceware.org/bugzilla/show_bug.cgi?id=11959>,
    which sometimes causes an unwanted diagnostic for fwrite calls.     which sometimes causes an unwanted diagnostic for fwrite calls.
   This affects only function declaration attributes, so it's not   This affects only function declaration attributes under certain
   needed for C++.  */   versions of gcc and clang, and is not needed for C++.  */
#  if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL#  if (0 < __USE_FORTIFY_LEVEL                                          \
static inline size_t _GL_ARG_NONNULL ((1, 4))       && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
rpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream)       && 3 < __GNUC__ + (4 <= __GNUC_MINOR__)                          \
{       && !defined __cplusplus)
  size_t r = fwrite (ptr, s, n, stream); 
  (void) r; 
  return r; 
} 
 #   undef fwrite  #   undef fwrite
   #   undef fwrite_unlocked
   extern size_t __REDIRECT (rpl_fwrite,
                             (const void *__restrict, size_t, size_t,
                              FILE *__restrict),
                             fwrite);
   extern size_t __REDIRECT (rpl_fwrite_unlocked,
                             (const void *__restrict, size_t, size_t,
                              FILE *__restrict),
                             fwrite_unlocked);
 #   define fwrite rpl_fwrite  #   define fwrite rpl_fwrite
   #   define fwrite_unlocked rpl_fwrite_unlocked
 #  endif  #  endif
 # endif  # endif
 _GL_CXXALIASWARN (fwrite);  _GL_CXXALIASWARN (fwrite);
Line 679  _GL_WARN_ON_USE (getline, "getline is unportable - " Line 746  _GL_WARN_ON_USE (getline, "getline is unportable - "
 # endif  # endif
 #endif  #endif
   
 #if @GNULIB_GETS@  
 # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@  
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)  
 #   undef gets  
 #   define gets rpl_gets  
 #  endif  
 _GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));  
 _GL_CXXALIAS_RPL (gets, char *, (char *s));  
 # else  
 _GL_CXXALIAS_SYS (gets, char *, (char *s));  
 #  undef gets  
 # endif  
 _GL_CXXALIASWARN (gets);  
 /* It is very rare that the developer ever has full control of stdin,  /* It is very rare that the developer ever has full control of stdin,
   so any use of gets warrants an unconditional warning.  Assume it is   so any use of gets warrants an unconditional warning; besides, C11
   always declared, since it is required by C89.  */   removed it.  */
 #undef gets
 #if HAVE_RAW_DECL_GETS && !defined __cplusplus
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");  _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
 #endif  #endif
   
   
 #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@  #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
 struct obstack;  struct obstack;
 /* Grow an obstack with formatted output.  Return the number of  /* Grow an obstack with formatted output.  Return the number of
Line 750  _GL_CXXALIAS_SYS (obstack_vprintf, int, Line 805  _GL_CXXALIAS_SYS (obstack_vprintf, int,
 _GL_CXXALIASWARN (obstack_vprintf);  _GL_CXXALIASWARN (obstack_vprintf);
 #endif  #endif
   
   #if @GNULIB_PCLOSE@
   # if !@HAVE_PCLOSE@
   _GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
   # endif
   _GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
   _GL_CXXALIASWARN (pclose);
   #elif defined GNULIB_POSIXCHECK
   # undef pclose
   # if HAVE_RAW_DECL_PCLOSE
   _GL_WARN_ON_USE (pclose, "pclose is unportable - "
                    "use gnulib module pclose for more portability");
   # endif
   #endif
   
 #if @GNULIB_PERROR@  #if @GNULIB_PERROR@
 /* Print a message to standard error, describing the value of ERRNO,  /* Print a message to standard error, describing the value of ERRNO,
    (if STRING is not NULL and not empty) prefixed with STRING and ": ",     (if STRING is not NULL and not empty) prefixed with STRING and ": ",
Line 781  _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, con Line 850  _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, con
                                  _GL_ARG_NONNULL ((1, 2)));                                   _GL_ARG_NONNULL ((1, 2)));
 _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));  _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
 # else  # else
   #  if !@HAVE_POPEN@
   _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
                                    _GL_ARG_NONNULL ((1, 2)));
   #  endif
 _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));  _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
 # endif  # endif
 _GL_CXXALIASWARN (popen);  _GL_CXXALIASWARN (popen);
Line 1016  _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " Line 1089  _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
 # endif  # endif
 #endif  #endif
   
/* Some people would argue that sprintf should be handled like gets/* Some people would argue that all sprintf uses should be warned about
   (for example, OpenBSD issues a link warning for both functions),   (for example, OpenBSD issues a link warning for it),
   since both can cause security holes due to buffer overruns.   since it can cause security holes due to buffer overruns.
    However, we believe that sprintf can be used safely, and is more     However, we believe that sprintf can be used safely, and is more
    efficient than snprintf in those safe cases; and as proof of our     efficient than snprintf in those safe cases; and as proof of our
    belief, we use sprintf in several gnulib modules.  So this header     belief, we use sprintf in several gnulib modules.  So this header
Line 1305  _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POS Line 1378  _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POS
                  "use gnulib module vsprintf-posix for portable "                   "use gnulib module vsprintf-posix for portable "
                       "POSIX compliance");                        "POSIX compliance");
 #endif  #endif
   
   
 #endif /* _@GUARD_PREFIX@_STDIO_H */  #endif /* _@GUARD_PREFIX@_STDIO_H */
 #endif /* _@GUARD_PREFIX@_STDIO_H */  #endif /* _@GUARD_PREFIX@_STDIO_H */

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


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