[v2,4/5] Y2038: add function __ctime64
Commit Message
Tested with 'make check' on x86_64-linux-gnu and i686-linux.gnu.
* include/time.h
(__ctime64): Add.
* time/gmtime.c
(__ctime64): Add.
[__TIMESIZE != 64] (ctime): Turn into a wrapper.
---
include/time.h | 7 +++++++
time/ctime.c | 19 +++++++++++++++++--
2 files changed, 24 insertions(+), 2 deletions(-)
Comments
On Tue, 18 Dec 2018, Albert ARIBAUD (3ADEV) wrote:
> +libc_hidden_proto(__ctime64);
Missing space before '('.
> +libc_hidden_def(__ctime64);
Likewise.
This patch is OK with those missing spaces fixed.
* Joseph Myers:
> On Tue, 18 Dec 2018, Albert ARIBAUD (3ADEV) wrote:
>
>> +libc_hidden_proto(__ctime64);
>
> Missing space before '('.
>
>> +libc_hidden_def(__ctime64);
>
> Likewise.
Also superfluous semicolon.
Thanks,
Florian
Hi Florian,
On Tue, 18 Dec 2018 18:42:31 +0100, Florian Weimer <fweimer@redhat.com>
wrote :
> * Joseph Myers:
>
> > On Tue, 18 Dec 2018, Albert ARIBAUD (3ADEV) wrote:
> >
> >> +libc_hidden_proto(__ctime64);
> >
> > Missing space before '('.
> >
> >> +libc_hidden_def(__ctime64);
> >
> > Likewise.
>
> Also superfluous semicolon.
Will be fixed (on __ctime64_r also) before applying, thanks.
> Thanks,
> Florian
Cordialement,
Albert ARIBAUD
3ADEV
@@ -57,6 +57,13 @@ extern time_t __mktime_internal (struct tm *__tp,
struct tm *),
long int *__offset) attribute_hidden;
+#if __TIMESIZE == 64
+# define __ctime64 ctime
+#else
+extern char *__ctime64 (const __time64_t *__timer) __THROW;
+libc_hidden_proto(__ctime64);
+#endif
+
#if __TIMESIZE == 64
# define __localtime64 localtime
#else
@@ -20,9 +20,24 @@
/* Return a string as returned by asctime which
is the representation of *T in that form. */
char *
-ctime (const time_t *t)
+__ctime64 (const __time64_t *t)
{
/* The C Standard says ctime (t) is equivalent to asctime (localtime (t)).
In particular, ctime and asctime must yield the same pointer. */
- return asctime (localtime (t));
+ return asctime (__localtime64 (t));
+}
+
+/* Provide a 32-bit variant if needed. */
+
+#if __TIMESIZE != 64
+
+libc_hidden_def(__ctime64);
+
+char *
+ctime (const time_t *t)
+{
+ __time64_t t64 = *t;
+ return __ctime64 (&t64);
}
+
+#endif