diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-10-19 11:51:48 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-10-27 09:54:50 -0300 |
commit | 5d8aa97da2332a818579bbb24880f9d44715448a (patch) | |
tree | 649294cdab8924f0905bc9bdc6c03a24627582b9 /time/ftime.c | |
parent | 30a0b167d347dd80807d167ee85bf58264fb8b76 (diff) | |
download | glibc-5d8aa97da2332a818579bbb24880f9d44715448a.zip glibc-5d8aa97da2332a818579bbb24880f9d44715448a.tar.gz glibc-5d8aa97da2332a818579bbb24880f9d44715448a.tar.bz2 |
time: Add 64-bit time_t support for ftime
It basically calls the 64-bit __clock_gettime64 and adds the overflow
check.
Checked on x86_64-linux-gnu and i686-linux-gnu.
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Diffstat (limited to 'time/ftime.c')
-rw-r--r-- | time/ftime.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/time/ftime.c b/time/ftime.c index 70a2590..91ba100 100644 --- a/time/ftime.c +++ b/time/ftime.c @@ -18,13 +18,13 @@ #include <features.h> #include <sys/timeb.h> -#include <time.h> +#include <errno.h> int -ftime (struct timeb *timebuf) +__ftime64 (struct __timeb64 *timebuf) { - struct timespec ts; - __clock_gettime (CLOCK_REALTIME, &ts); + struct __timespec64 ts; + __clock_gettime64 (CLOCK_REALTIME, &ts); timebuf->time = ts.tv_sec; timebuf->millitm = ts.tv_nsec / 1000000; @@ -32,3 +32,23 @@ ftime (struct timeb *timebuf) timebuf->dstflag = 0; return 0; } +#if __TIMESIZE != 64 +libc_hidden_def (__ftime64) + +int +ftime (struct timeb *timebuf) +{ + struct __timeb64 tb64; + __ftime64 (&tb64); + if (! in_time_t_range (tb64.time)) + { + __set_errno (EOVERFLOW); + return -1; + } + timebuf->time = tb64.time; + timebuf->millitm = tb64.millitm; + timebuf->timezone = tb64.timezone; + timebuf->dstflag = tb64.dstflag; + return 0; +} +#endif |