[[PATCH,RFC,2] 11/63] Y2038: implement 64-bit-time __timegm64()

Message ID 20180418201819.15952-12-albert.aribaud@3adev.fr
State New, archived
Headers

Commit Message

Albert ARIBAUD April 18, 2018, 8:17 p.m. UTC
  Implementation is based on the same __mktime64_internal function
which was introduced in the '__mktime64' implementation change.
---
 time/Versions |  1 +
 time/timegm.c | 11 +++++++++++
 2 files changed, 12 insertions(+)
  

Patch

diff --git a/time/Versions b/time/Versions
index f5ccacc759..7cfae8760c 100644
--- a/time/Versions
+++ b/time/Versions
@@ -71,5 +71,6 @@  libc {
     __gmtime64; __gmtime64_r;
     __localtime64; __localtime64_r;
     __mktime64; __timelocal64_r;
+    __timegm64;
   }
 }
diff --git a/time/timegm.c b/time/timegm.c
index fb720e2d7d..8ac9b0b78e 100644
--- a/time/timegm.c
+++ b/time/timegm.c
@@ -36,6 +36,9 @@ 
 time_t __mktime_internal (struct tm *,
 			  struct tm * (*) (time_t const *, struct tm *),
 			  time_t *);
+__time64_t __mktime64_internal (struct tm *,
+				struct tm * (*) (__time64_t const *, struct tm *),
+				__time64_t *);
 #endif
 
 time_t
@@ -45,3 +48,11 @@  timegm (struct tm *tmp)
   tmp->tm_isdst = 0;
   return __mktime_internal (tmp, __gmtime_r, &gmtime_offset);
 }
+
+__time64_t
+__timegm64 (struct tm *tmp)
+{
+  static __time64_t gmtime64_offset;
+  tmp->tm_isdst = 0;
+  return __mktime64_internal (tmp, __gmtime64_r, &gmtime64_offset);
+}