From: Albert ARIBAUD (3ADEV) Date: Thu, 7 Sep 2017 22:41:55 +0000 (+0200) Subject: Y2038: add function __time64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ba84c8a86bb0baa44c4311569257b30777e322c;p=thirdparty%2Fglibc.git Y2038: add function __time64 This provides a generic Posix implementation based on calling __gettimeofday64(). --- diff --git a/sysdeps/posix/time64.c b/sysdeps/posix/time64.c new file mode 100644 index 00000000000..4a58228d8a9 --- /dev/null +++ b/sysdeps/posix/time64.c @@ -0,0 +1,43 @@ +/* Get the 64-bit current time + * + Copyright (C) 1991-2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include /* For NULL. */ +#include +#include + + +/* Return the current time as a `time_t' and also put it in *T if T is + not NULL. Time is represented as seconds from Jan 1 00:00:00 1970. */ + +__time64_t +__time64 (__time64_t *t) +{ + struct __timeval64 tv; + __time64_t result; + + if (__gettimeofday64 (&tv, (struct timezone *) NULL)) + result = (__time64_t) -1; + else + result = tv.tv_sec; + + if (t != NULL) + *t = result; + + return result; +} diff --git a/time/Makefile b/time/Makefile index 8354b26ab20..d4c553fc3e4 100644 --- a/time/Makefile +++ b/time/Makefile @@ -31,6 +31,7 @@ headers := time.h sys/time.h sys/timeb.h bits/time.h \ routines := offtime asctime clock ctime ctime_r difftime \ gmtime localtime mktime time \ + time64 \ gettimeofday settimeofday adjtime tzset \ gettimeofday64 settimeofday64 \ tzfile getitimer setitimer \ diff --git a/time/Versions b/time/Versions index 1b178e43f91..b5e070f82b2 100644 --- a/time/Versions +++ b/time/Versions @@ -82,5 +82,6 @@ libc { __lutimes64; __gettimeofday64; __settimeofday64; + __time64; } } diff --git a/time/time.c b/time/time.c index 4996d26f13c..9703c724640 100644 --- a/time/time.c +++ b/time/time.c @@ -31,3 +31,16 @@ time (time_t *timer) libc_hidden_def (time) stub_warning (time) + +/* 64-bit time version */ + +__time64_t +__time64 (__time64_ *timer) +{ + __set_errno (ENOSYS); + + if (timer != NULL) + *timer = (__time64_t) -1; + return (__time64_t) -1; +} +libc_hidden_def (__time64)