This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH v2 4/5] Y2038: add function __ctime64
- From: "Albert ARIBAUD (3ADEV)" <albert dot aribaud at 3adev dot fr>
- To: libc-alpha at sourceware dot org
- Date: Tue, 18 Dec 2018 15:09:54 +0100
- Subject: [PATCH v2 4/5] Y2038: add function __ctime64
- References: <20181218140955.7910-1-albert.aribaud@3adev.fr>
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(-)
diff --git a/include/time.h b/include/time.h
index 5a37c0ff79..1f7d175ca6 100644
--- a/include/time.h
+++ b/include/time.h
@@ -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
diff --git a/time/ctime.c b/time/ctime.c
index 1222614f29..43a39e3f3b 100644
--- a/time/ctime.c
+++ b/time/ctime.c
@@ -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
--
2.17.1