diff options
author | Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr> | 2018-12-18 23:11:08 +0100 |
---|---|---|
committer | Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr> | 2018-12-18 23:11:08 +0100 |
commit | 64c2277d2eb14b6b485a16b799d900505e2cbe71 (patch) | |
tree | ccf33d4c07dff1a2125da43bf49ab4626f2182e9 | |
parent | s390: Use generic kernel_sigaction.h (diff) | |
download | glibc-64c2277d2eb14b6b485a16b799d900505e2cbe71.tar.gz glibc-64c2277d2eb14b6b485a16b799d900505e2cbe71.tar.bz2 glibc-64c2277d2eb14b6b485a16b799d900505e2cbe71.zip |
Y2038: add function __localtime64_r
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.
* include/time.h
(__localtime64_r): Add.
* time/localtime.c
(__localtime64_r): Add.
[__TIMESIZE != 64] (__localtime_r): Turn into a wrapper.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | include/time.h | 8 | ||||
-rw-r--r-- | time/localtime.c | 17 |
3 files changed, 32 insertions, 1 deletions
@@ -1,3 +1,11 @@ +2018-12-18 Albert ARIBAUD <albert.aribaud@3adev.fr> + + * include/time.h + (__localtime64_r): Add. + * time/localtime.c + (__localtime64_r): Add. + [__TIMESIZE != 64] (__localtime_r): Turn into a wrapper. + 2018-12-18 Adhemerval Zanella <adhemerval.zanella@linaro.org> * sysdeps/unix/sysv/linux/s390/kernel_sigaction.h: Use Linux generic diff --git a/include/time.h b/include/time.h index 3bc303a36e..876b8a2b5f 100644 --- a/include/time.h +++ b/include/time.h @@ -67,6 +67,14 @@ libc_hidden_proto (__localtime64) extern struct tm *__localtime_r (const time_t *__timer, struct tm *__tp) attribute_hidden; +#if __TIMESIZE == 64 +# define __localtime64_r __localtime_r +#else +extern struct tm *__localtime64_r (const __time64_t *__timer, + struct tm *__tp); +libc_hidden_proto (__localtime64_r) +#endif + extern struct tm *__gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp); libc_hidden_proto (__gmtime_r) diff --git a/time/localtime.c b/time/localtime.c index 96879d4ec0..9367c7082b 100644 --- a/time/localtime.c +++ b/time/localtime.c @@ -25,10 +25,25 @@ struct tm _tmbuf; /* Return the `struct tm' representation of *T in local time, using *TP to store the result. */ struct tm * -__localtime_r (const time_t *t, struct tm *tp) +__localtime64_r (const __time64_t *t, struct tm *tp) { return __tz_convert (*t, 1, tp); } + +/* Provide a 32-bit variant if needed. */ + +#if __TIMESIZE != 64 + +struct tm * +__localtime_r (const time_t *t, struct tm *tp) +{ + __time64_t t64 = *t; + return __localtime64_r (&t64, tp); +} +libc_hidden_def (__localtime64_r) + +#endif + weak_alias (__localtime_r, localtime_r) |