Mercurial > gnulib
changeset 12947:c2b20f3765ff
sys_time: Avoid #define replacements in C++ mode.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Mon, 08 Mar 2010 01:41:33 +0100 |
parents | 9e4da0c0da6a |
children | ea38eeab7d0f |
files | ChangeLog lib/sys_time.in.h modules/sys_time |
diffstat | 3 files changed, 37 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Mar 08 01:39:41 2010 +0100 +++ b/ChangeLog Mon Mar 08 01:41:33 2010 +0100 @@ -1,5 +1,11 @@ 2010-03-07 Bruno Haible <bruno@clisp.org> + sys_time: Avoid #define replacements in C++ mode. + * lib/sys_time.in.h: Include c++defs.h. + (gettimeofday): In C++, define a namespaced alias symbol. + * modules/sys_time (Depends-on): Add c++defs. + (Makefile.am): Update sys/time.h rule. + sys_stat: Avoid #define replacements in C++ mode. * lib/sys_stat.in.h: Include c++defs.h. (fchmodat, fstat, fstatat, futimens, lchmod, lstat, mkdir, mkdirat,
--- a/lib/sys_time.in.h Mon Mar 08 01:39:41 2010 +0100 +++ b/lib/sys_time.in.h Mon Mar 08 01:41:33 2010 +0100 @@ -39,13 +39,15 @@ # include <time.h> # endif +/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ + /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ -#ifdef __cplusplus +# ifdef __cplusplus extern "C" { -#endif +# endif # if ! @HAVE_STRUCT_TIMEVAL@ struct timeval @@ -55,15 +57,33 @@ }; # endif +# ifdef __cplusplus +} +# endif + # if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_GETTIMEOFDAY@ -# undef gettimeofday -# define gettimeofday rpl_gettimeofday +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef gettimeofday +# define gettimeofday rpl_gettimeofday +# endif +_GL_FUNCDECL_RPL (gettimeofday, int, + (struct timeval *restrict, void *restrict) + _GL_ARG_NONNULL ((1))); +_GL_CXXALIAS_RPL (gettimeofday, int, + (struct timeval *restrict, void *restrict)); +# else +# if !@HAVE_GETTIMEOFDAY@ +_GL_FUNCDECL_SYS (gettimeofday, int, + (struct timeval *restrict, void *restrict) + _GL_ARG_NONNULL ((1))); +# endif +/* Need to cast, because on glibc systems, by default, the second argument is + struct timezone *. */ +_GL_CXXALIAS_SYS_CAST (gettimeofday, int, + (struct timeval *restrict, void *restrict)); # endif -# if @REPLACE_GETTIMEOFDAY@ || !@HAVE_GETTIMEOFDAY@ -extern int gettimeofday (struct timeval *restrict, void *restrict) - _GL_ARG_NONNULL ((1)); -# endif +_GL_CXXALIASWARN (gettimeofday); # elif defined GNULIB_POSIXCHECK # undef gettimeofday # if HAVE_RAW_DECL_GETTIMEOFDAY @@ -72,8 +92,4 @@ # endif # endif -#ifdef __cplusplus -} -#endif - #endif /* _GL_SYS_TIME_H */
--- a/modules/sys_time Mon Mar 08 01:39:41 2010 +0100 +++ b/modules/sys_time Mon Mar 08 01:41:33 2010 +0100 @@ -8,6 +8,7 @@ Depends-on: include_next arg-nonnull +c++defs warn-on-use configure.ac: @@ -19,7 +20,7 @@ # We need the following in order to create <sys/time.h> when the system # doesn't have one that works with the given compiler. -sys/time.h: sys_time.in.h $(WARN_ON_USE_H) $(ARG_NONNULL_H) +sys/time.h: sys_time.in.h $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @@ -31,6 +32,7 @@ -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_time.in.h; \