X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Ftime.in.h;h=87608a39cb81e37294b9ec2d60f4b4a228ca17ac;hb=edb5054087db6afdc3ab2cc645ce2d891ee88c6d;hp=a5d3ae456b31a9936d0b2f4cdeb8bf68f84d17d1;hpb=a8c2b3083dcaff29eb1c34e1901fae3f7858d3aa;p=gnulib.git diff --git a/lib/time.in.h b/lib/time.in.h index a5d3ae456..87608a39c 100644 --- a/lib/time.in.h +++ b/lib/time.in.h @@ -38,7 +38,7 @@ # @INCLUDE_NEXT@ @NEXT_TIME_H@ /* NetBSD 5.0 mis-defines NULL. */ -#include +# include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ @@ -46,17 +46,28 @@ /* The definition of _GL_WARN_ON_USE is copied here. */ -# ifdef __cplusplus -extern "C" { -# endif - /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). Or they define it with the wrong member names or define it in - (e.g., FreeBSD circa 1997). */ + (e.g., FreeBSD circa 1997). Stock Mingw does not define it, but the + pthreads-win32 library defines it in . */ # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ # if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ # include +# elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ +# include +/* The pthreads-win32 also defines a couple of broken macros. */ +# undef asctime_r +# undef ctime_r +# undef gmtime_r +# undef localtime_r +# undef rand_r +# undef strtok_r # else + +# ifdef __cplusplus +extern "C" { +# endif + # undef timespec # define timespec rpl_timespec struct timespec @@ -64,11 +75,12 @@ struct timespec time_t tv_sec; long int tv_nsec; }; -# endif -# endif -# ifdef __cplusplus +# ifdef __cplusplus } +# endif + +# endif # endif /* Sleep for at least RQTP seconds unless interrupted, If interrupted, @@ -85,6 +97,11 @@ _GL_FUNCDECL_RPL (nanosleep, int, _GL_CXXALIAS_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # else +# if ! @HAVE_NANOSLEEP@ +_GL_FUNCDECL_SYS (nanosleep, int, + (struct timespec const *__rqtp, struct timespec *__rmtp) + _GL_ARG_NONNULL ((1))); +# endif _GL_CXXALIAS_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # endif @@ -120,6 +137,11 @@ _GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, _GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else +# if ! @HAVE_LOCALTIME_R@ +_GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, + struct tm *restrict __result) + _GL_ARG_NONNULL ((1, 2))); +# endif _GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif @@ -135,6 +157,11 @@ _GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, _GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else +# if ! @HAVE_LOCALTIME_R@ +_GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, + struct tm *restrict __result) + _GL_ARG_NONNULL ((1, 2))); +# endif _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif @@ -145,23 +172,15 @@ _GL_CXXALIASWARN (gmtime_r); the resulting broken-down time into TM. See . */ # if @GNULIB_STRPTIME@ -# if @REPLACE_STRPTIME@ -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strptime -# define strptime rpl_strptime -# endif -_GL_FUNCDECL_RPL (strptime, char *, (char const *restrict __buf, +# if ! @HAVE_STRPTIME@ +_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm) _GL_ARG_NONNULL ((1, 2, 3))); -_GL_CXXALIAS_RPL (strptime, char *, (char const *restrict __buf, - char const *restrict __format, - struct tm *restrict __tm)); -# else +# endif _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm)); -# endif _GL_CXXALIASWARN (strptime); # endif @@ -175,6 +194,9 @@ _GL_CXXALIASWARN (strptime); _GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); # else +# if ! @HAVE_TIMEGM@ +_GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); +# endif _GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); # endif _GL_CXXALIASWARN (timegm); @@ -183,15 +205,25 @@ _GL_CXXALIASWARN (timegm); /* Encourage applications to avoid unsafe functions that can overrun buffers when given outlandish struct tm values. Portable applications should use strftime (or even sprintf) instead. */ -# if GNULIB_PORTCHECK +# if defined GNULIB_POSIXCHECK # undef asctime -# define asctime eschew_asctime +_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " + "better use strftime (or even sprintf) instead"); +# endif +# if defined GNULIB_POSIXCHECK # undef asctime_r -# define asctime_r eschew_asctime_r +_GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " + "better use strftime (or even sprintf) instead"); +# endif +# if defined GNULIB_POSIXCHECK # undef ctime -# define ctime eschew_ctime +_GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " + "better use strftime (or even sprintf) instead"); +# endif +# if defined GNULIB_POSIXCHECK # undef ctime_r -# define ctime_r eschew_ctime_r +_GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " + "better use strftime (or even sprintf) instead"); # endif #endif