From f64898abf40b09990c4974c921ddc2ebc698609a Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 30 Nov 2012 10:25:59 -0800 Subject: [PATCH 1/1] Merge from gnulib for 'inline'. 2012-11-29 snippet/warn-on-use: no 'static inline' 2012-11-29 ftruncate, fts, lstat, openat, raise: no 'static inline' 2012-11-29 arctwo, md4, md5, sha1, sha256, sha512: no 'static inline' 2012-11-29 fflush, stat: no 'static inline' 2012-11-29 stdio: better 'inline' 2012-11-29 sys_stat: no 'static inline' 2012-11-29 unistd: better 'inline' 2012-11-29 c-strtod, memcoll, readutmp: no 'static inline' 2012-11-29 extern-inline: no 'static inline' 2012-11-29 sys_socket: better 'inline' * lib/stdio.c, lib/unistd.c: New files, from gnulib. * build-aux/snippet/warn-on-use.h, lib/gnulib.mk, lib/lstat.c: * lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c, lib/stat.c: * lib/stdio.in.h, lib/sys_stat.in.h, lib/unistd.in.h, m4/c-strtod.m4: * m4/extern-inline.m4, m4/gnulib-comp.m4, m4/lstat.m4, m4/md5.m4: * m4/sha1.m4, m4/sha256.m4, m4/sha512.m4, m4/stat.m4, m4/stdio_h.m4: * m4/sys_socket_h.m4, m4/sys_stat_h.m4, m4/unistd_h.m4: Update from gnulib. Fixes: debbugs:13040 --- ChangeLog | 22 ++++++++++++++++++++++ build-aux/snippet/warn-on-use.h | 2 +- lib/gnulib.mk | 2 ++ lib/lstat.c | 2 +- lib/md5.c | 2 +- lib/sha1.c | 2 +- lib/sha256.c | 2 +- lib/sha512.c | 2 +- lib/stat.c | 2 +- lib/stdio.c | 3 +++ lib/stdio.in.h | 8 +++++++- lib/sys_stat.in.h | 2 +- lib/unistd.c | 3 +++ lib/unistd.in.h | 10 ++++++++-- m4/c-strtod.m4 | 8 +------- m4/extern-inline.m4 | 5 ++--- m4/gnulib-comp.m4 | 2 ++ m4/lstat.m4 | 8 ++------ m4/md5.m4 | 3 +-- m4/sha1.m4 | 3 +-- m4/sha256.m4 | 3 +-- m4/sha512.m4 | 3 +-- m4/stat.m4 | 8 ++------ m4/stdio_h.m4 | 3 +-- m4/sys_socket_h.m4 | 3 +-- m4/sys_stat_h.m4 | 5 +---- m4/unistd_h.m4 | 3 +-- 27 files changed, 70 insertions(+), 51 deletions(-) create mode 100644 lib/stdio.c create mode 100644 lib/unistd.c diff --git a/ChangeLog b/ChangeLog index ab81d73e45..b27377baa4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2012-11-30 Paul Eggert + + Merge from gnulib for 'inline' (Bug#13040), incorporating: + 2012-11-29 snippet/warn-on-use: no 'static inline' + 2012-11-29 ftruncate, fts, lstat, openat, raise: no 'static inline' + 2012-11-29 arctwo, md4, md5, sha1, sha256, sha512: no 'static inline' + 2012-11-29 fflush, stat: no 'static inline' + 2012-11-29 stdio: better 'inline' + 2012-11-29 sys_stat: no 'static inline' + 2012-11-29 unistd: better 'inline' + 2012-11-29 c-strtod, memcoll, readutmp: no 'static inline' + 2012-11-29 extern-inline: no 'static inline' + 2012-11-29 sys_socket: better 'inline' + * lib/stdio.c, lib/unistd.c: New files, from gnulib. + * build-aux/snippet/warn-on-use.h, lib/gnulib.mk, lib/lstat.c: + * lib/md5.c, lib/sha1.c, lib/sha256.c, lib/sha512.c, lib/stat.c: + * lib/stdio.in.h, lib/sys_stat.in.h, lib/unistd.in.h, m4/c-strtod.m4: + * m4/extern-inline.m4, m4/gnulib-comp.m4, m4/lstat.m4, m4/md5.m4: + * m4/sha1.m4, m4/sha256.m4, m4/sha512.m4, m4/stat.m4, m4/stdio_h.m4: + * m4/sys_socket_h.m4, m4/sys_stat_h.m4, m4/unistd_h.m4: + Update from gnulib. + 2012-11-27 Eli Zaretskii * make-dist (nt): Adjust to changes in names of the *.manifest files. diff --git a/build-aux/snippet/warn-on-use.h b/build-aux/snippet/warn-on-use.h index d4cb94f352..51e69bbd9b 100644 --- a/build-aux/snippet/warn-on-use.h +++ b/build-aux/snippet/warn-on-use.h @@ -55,7 +55,7 @@ rather than issue the nice warning, but the end result of informing the developer about their portability problem is still achieved): #if HAVE_RAW_DECL_ENVIRON - static inline char ***rpl_environ (void) { return &environ; } + static char ***rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); # undef environ # define environ (*rpl_environ ()) diff --git a/lib/gnulib.mk b/lib/gnulib.mk index 834f63169e..9d7cb28156 100644 --- a/lib/gnulib.mk +++ b/lib/gnulib.mk @@ -756,6 +756,7 @@ EXTRA_DIST += stdint.in.h ## begin gnulib module stdio BUILT_SOURCES += stdio.h +libgnu_a_SOURCES += stdio.c # We need the following in order to create when the system # doesn't have one that works with the given compiler. @@ -1251,6 +1252,7 @@ EXTRA_DIST += u64.h ## begin gnulib module unistd BUILT_SOURCES += unistd.h +libgnu_a_SOURCES += unistd.c # We need the following in order to create an empty placeholder for # when the system doesn't have one. diff --git a/lib/lstat.c b/lib/lstat.c index db119a10d3..97fe6bb2d5 100644 --- a/lib/lstat.c +++ b/lib/lstat.c @@ -35,7 +35,7 @@ typedef int dummy; # include # undef __need_system_sys_stat_h -static inline int +static int orig_lstat (const char *filename, struct stat *buf) { return lstat (filename, buf); diff --git a/lib/md5.c b/lib/md5.c index 30b7e50e3a..6e6d61270d 100644 --- a/lib/md5.c +++ b/lib/md5.c @@ -83,7 +83,7 @@ md5_init_ctx (struct md5_ctx *ctx) /* Copy the 4 byte value from v into the memory location pointed to by *cp, If your architecture allows unaligned access this is equivalent to * (uint32_t *) cp = v */ -static inline void +static void set_uint32 (char *cp, uint32_t v) { memcpy (cp, &v, sizeof v); diff --git a/lib/sha1.c b/lib/sha1.c index 0d82af14bc..b9505dd946 100644 --- a/lib/sha1.c +++ b/lib/sha1.c @@ -70,7 +70,7 @@ sha1_init_ctx (struct sha1_ctx *ctx) /* Copy the 4 byte value from v into the memory location pointed to by *cp, If your architecture allows unaligned access this is equivalent to * (uint32_t *) cp = v */ -static inline void +static void set_uint32 (char *cp, uint32_t v) { memcpy (cp, &v, sizeof v); diff --git a/lib/sha256.c b/lib/sha256.c index a8d29da18d..55273c6a3b 100644 --- a/lib/sha256.c +++ b/lib/sha256.c @@ -90,7 +90,7 @@ sha224_init_ctx (struct sha256_ctx *ctx) /* Copy the value from v into the memory location pointed to by *cp, If your architecture allows unaligned access this is equivalent to * (uint32_t *) cp = v */ -static inline void +static void set_uint32 (char *cp, uint32_t v) { memcpy (cp, &v, sizeof v); diff --git a/lib/sha512.c b/lib/sha512.c index cf62f2034e..dfb67a305d 100644 --- a/lib/sha512.c +++ b/lib/sha512.c @@ -97,7 +97,7 @@ sha384_init_ctx (struct sha512_ctx *ctx) /* Copy the value from V into the memory location pointed to by *CP, If your architecture allows unaligned access, this is equivalent to * (__typeof__ (v) *) cp = v */ -static inline void +static void set_uint64 (char *cp, u64 v) { memcpy (cp, &v, sizeof v); diff --git a/lib/stat.c b/lib/stat.c index 7599540890..c0bcb88320 100644 --- a/lib/stat.c +++ b/lib/stat.c @@ -42,7 +42,7 @@ # endif #endif -static inline int +static int orig_stat (const char *filename, struct stat *buf) { return stat (filename, buf); diff --git a/lib/stdio.c b/lib/stdio.c new file mode 100644 index 0000000000..e6ed82996b --- /dev/null +++ b/lib/stdio.c @@ -0,0 +1,3 @@ +#include +#define _GL_STDIO_INLINE _GL_EXTERN_INLINE +#include "stdio.h" diff --git a/lib/stdio.in.h b/lib/stdio.in.h index b1b543dee7..f3b52d28f6 100644 --- a/lib/stdio.in.h +++ b/lib/stdio.in.h @@ -46,6 +46,11 @@ #ifndef _@GUARD_PREFIX@_STDIO_H #define _@GUARD_PREFIX@_STDIO_H +_GL_INLINE_HEADER_BEGIN +#ifndef _GL_STDIO_INLINE +# define _GL_STDIO_INLINE _GL_INLINE +#endif + /* Get va_list. Needed on many systems, including glibc 2.8. */ #include @@ -581,7 +586,7 @@ _GL_CXXALIAS_SYS (fwrite, size_t, This affects only function declaration attributes, so it's not needed for C++. */ # if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL -static inline size_t _GL_ARG_NONNULL ((1, 4)) +_GL_STDIO_INLINE size_t _GL_ARG_NONNULL ((1, 4)) rpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream) { size_t r = fwrite (ptr, s, n, stream); @@ -1333,6 +1338,7 @@ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " "POSIX compliance"); #endif +_GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif /* _@GUARD_PREFIX@_STDIO_H */ diff --git a/lib/sys_stat.in.h b/lib/sys_stat.in.h index 2efc1e92e0..ac05ddb5ce 100644 --- a/lib/sys_stat.in.h +++ b/lib/sys_stat.in.h @@ -497,7 +497,7 @@ _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # if !GNULIB_defined_rpl_mkdir -static inline int +static int rpl_mkdir (char const *name, mode_t mode) { return _mkdir (name); diff --git a/lib/unistd.c b/lib/unistd.c new file mode 100644 index 0000000000..6c6a8e268c --- /dev/null +++ b/lib/unistd.c @@ -0,0 +1,3 @@ +#include +#define _GL_UNISTD_INLINE _GL_EXTERN_INLINE +#include "unistd.h" diff --git a/lib/unistd.in.h b/lib/unistd.in.h index e904e512ee..6171f77ac7 100644 --- a/lib/unistd.in.h +++ b/lib/unistd.in.h @@ -127,6 +127,11 @@ # include #endif +_GL_INLINE_HEADER_BEGIN +#ifndef _GL_UNISTD_INLINE +# define _GL_UNISTD_INLINE _GL_INLINE +#endif + /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ @@ -404,7 +409,7 @@ extern char **environ; # endif #elif defined GNULIB_POSIXCHECK # if HAVE_RAW_DECL_ENVIRON -static inline char *** +_GL_UNISTD_INLINE char *** rpl_environ (void) { return &environ; @@ -862,7 +867,7 @@ _GL_CXXALIAS_RPL (getpagesize, int, (void)); # define getpagesize() _gl_getpagesize () # else # if !GNULIB_defined_getpagesize_function -static inline int +_GL_UNISTD_INLINE int getpagesize () { return _gl_getpagesize (); @@ -1530,6 +1535,7 @@ _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); _GL_CXXALIASWARN (write); #endif +_GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_UNISTD_H */ #endif /* _@GUARD_PREFIX@_UNISTD_H */ diff --git a/m4/c-strtod.m4 b/m4/c-strtod.m4 index c002e5fcea..535721c8db 100644 --- a/m4/c-strtod.m4 +++ b/m4/c-strtod.m4 @@ -1,4 +1,4 @@ -# c-strtod.m4 serial 14 +# c-strtod.m4 serial 15 # Copyright (C) 2004-2006, 2009-2012 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation @@ -38,9 +38,6 @@ AC_DEFUN([gl_C_STRTOD], [ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS([strtod_l]) - - AC_REQUIRE([AC_C_INLINE]) - : ]) dnl Prerequisites of lib/c-strtold.c. @@ -49,7 +46,4 @@ AC_DEFUN([gl_C_STRTOLD], AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_C99_STRTOLD]) AC_CHECK_FUNCS([strtold_l]) - - AC_REQUIRE([AC_C_INLINE]) - : ]) diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4 index 600c8d3fa1..24922605e6 100644 --- a/m4/extern-inline.m4 +++ b/m4/extern-inline.m4 @@ -7,7 +7,6 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_EXTERN_INLINE], [ - AC_REQUIRE([AC_C_INLINE]) AH_VERBATIM([extern_inline], [/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'. _GL_EXTERN_INLINE is a portable alternative to 'extern inline'. @@ -32,8 +31,8 @@ AC_DEFUN([gl_EXTERN_INLINE], # endif # define _GL_EXTERN_INLINE extern #else -# define _GL_INLINE static inline -# define _GL_EXTERN_INLINE static inline +# define _GL_INLINE static +# define _GL_EXTERN_INLINE static #endif #if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index 30f81b4781..1d09eb8ef9 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -690,6 +690,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/stdbool.in.h lib/stddef.in.h lib/stdint.in.h + lib/stdio.c lib/stdio.in.h lib/stdlib.in.h lib/strftime.c @@ -712,6 +713,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/timespec.h lib/u64.c lib/u64.h + lib/unistd.c lib/unistd.in.h lib/utimens.c lib/utimens.h diff --git a/m4/lstat.m4 b/m4/lstat.m4 index b7335bda1b..01b4eb953d 100644 --- a/m4/lstat.m4 +++ b/m4/lstat.m4 @@ -1,4 +1,4 @@ -# serial 25 +# serial 26 # Copyright (C) 1997-2001, 2003-2012 Free Software Foundation, Inc. # @@ -27,11 +27,7 @@ AC_DEFUN([gl_FUNC_LSTAT], ]) # Prerequisites of lib/lstat.c. -AC_DEFUN([gl_PREREQ_LSTAT], -[ - AC_REQUIRE([AC_C_INLINE]) - : -]) +AC_DEFUN([gl_PREREQ_LSTAT], [:]) AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], [ diff --git a/m4/md5.m4 b/m4/md5.m4 index e22f7bdb17..85ed894606 100644 --- a/m4/md5.m4 +++ b/m4/md5.m4 @@ -1,4 +1,4 @@ -# md5.m4 serial 12 +# md5.m4 serial 13 dnl Copyright (C) 2002-2006, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,6 +8,5 @@ AC_DEFUN([gl_MD5], [ dnl Prerequisites of lib/md5.c. AC_REQUIRE([gl_BIGENDIAN]) - AC_REQUIRE([AC_C_INLINE]) : ]) diff --git a/m4/sha1.m4 b/m4/sha1.m4 index 76198258b9..29fa485034 100644 --- a/m4/sha1.m4 +++ b/m4/sha1.m4 @@ -1,4 +1,4 @@ -# sha1.m4 serial 10 +# sha1.m4 serial 11 dnl Copyright (C) 2002-2006, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,6 +8,5 @@ AC_DEFUN([gl_SHA1], [ dnl Prerequisites of lib/sha1.c. AC_REQUIRE([gl_BIGENDIAN]) - AC_REQUIRE([AC_C_INLINE]) : ]) diff --git a/m4/sha256.m4 b/m4/sha256.m4 index 78cc95ed8b..f75a7fb9e0 100644 --- a/m4/sha256.m4 +++ b/m4/sha256.m4 @@ -1,4 +1,4 @@ -# sha256.m4 serial 5 +# sha256.m4 serial 6 dnl Copyright (C) 2005, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,5 +8,4 @@ AC_DEFUN([gl_SHA256], [ dnl Prerequisites of lib/sha256.c. AC_REQUIRE([gl_BIGENDIAN]) - AC_REQUIRE([AC_C_INLINE]) ]) diff --git a/m4/sha512.m4 b/m4/sha512.m4 index 937ea8d5e9..e6e27393d7 100644 --- a/m4/sha512.m4 +++ b/m4/sha512.m4 @@ -1,4 +1,4 @@ -# sha512.m4 serial 6 +# sha512.m4 serial 7 dnl Copyright (C) 2005-2006, 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -8,5 +8,4 @@ AC_DEFUN([gl_SHA512], [ dnl Prerequisites of lib/sha512.c. AC_REQUIRE([gl_BIGENDIAN]) - AC_REQUIRE([AC_C_INLINE]) ]) diff --git a/m4/stat.m4 b/m4/stat.m4 index a8b79f5bcb..0fd117e05e 100644 --- a/m4/stat.m4 +++ b/m4/stat.m4 @@ -1,4 +1,4 @@ -# serial 10 +# serial 11 # Copyright (C) 2009-2012 Free Software Foundation, Inc. # @@ -68,8 +68,4 @@ AC_DEFUN([gl_FUNC_STAT], ]) # Prerequisites of lib/stat.c. -AC_DEFUN([gl_PREREQ_STAT], -[ - AC_REQUIRE([AC_C_INLINE]) - : -]) +AC_DEFUN([gl_PREREQ_STAT], [:]) diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4 index 5298dd6d9d..3bd6580366 100644 --- a/m4/stdio_h.m4 +++ b/m4/stdio_h.m4 @@ -1,4 +1,4 @@ -# stdio_h.m4 serial 42 +# stdio_h.m4 serial 43 dnl Copyright (C) 2007-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -7,7 +7,6 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDIO_H], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) - AC_REQUIRE([AC_C_INLINE]) gl_NEXT_HEADERS([stdio.h]) dnl No need to create extra modules for these functions. Everyone who uses diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4 index 8d4e7e1ebb..acfae41328 100644 --- a/m4/sys_socket_h.m4 +++ b/m4/sys_socket_h.m4 @@ -1,4 +1,4 @@ -# sys_socket_h.m4 serial 22 +# sys_socket_h.m4 serial 23 dnl Copyright (C) 2005-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -10,7 +10,6 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET], [ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_C_INLINE]) dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have dnl old-style declarations (with return type 'int' instead of 'ssize_t') diff --git a/m4/sys_stat_h.m4 b/m4/sys_stat_h.m4 index f45dee1dc4..8af3353ea5 100644 --- a/m4/sys_stat_h.m4 +++ b/m4/sys_stat_h.m4 @@ -1,4 +1,4 @@ -# sys_stat_h.m4 serial 27 -*- Autoconf -*- +# sys_stat_h.m4 serial 28 -*- Autoconf -*- dnl Copyright (C) 2006-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -11,9 +11,6 @@ AC_DEFUN([gl_HEADER_SYS_STAT_H], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) - dnl For the mkdir substitute. - AC_REQUIRE([AC_C_INLINE]) - dnl Check for broken stat macros. AC_REQUIRE([AC_HEADER_STAT]) diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4 index 7e7651b9d2..f68fbff8ce 100644 --- a/m4/unistd_h.m4 +++ b/m4/unistd_h.m4 @@ -1,4 +1,4 @@ -# unistd_h.m4 serial 65 +# unistd_h.m4 serial 66 dnl Copyright (C) 2006-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -11,7 +11,6 @@ AC_DEFUN([gl_UNISTD_H], dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - AC_REQUIRE([AC_C_INLINE]) gl_CHECK_NEXT_HEADERS([unistd.h]) if test $ac_cv_header_unistd_h = yes; then -- 2.20.1