about summary refs log tree commit diff
path: root/time
diff options
context:
space:
mode:
Diffstat (limited to 'time')
-rw-r--r--time/ftime.c26
-rw-r--r--time/sys/timeb.h3
-rw-r--r--time/tst-ftime.c7
3 files changed, 18 insertions, 18 deletions
diff --git a/time/ftime.c b/time/ftime.c
index 8bedc0d91e..b4bd58ecef 100644
--- a/time/ftime.c
+++ b/time/ftime.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1994-2019 Free Software Foundation, Inc.
+/* Deprecated return date and time.
+   Copyright (C) 1994-2019 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
@@ -15,27 +16,18 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <errno.h>
-#include <time.h>
 #include <sys/timeb.h>
+#include <time.h>
 
 int
 ftime (struct timeb *timebuf)
 {
-  int save = errno;
-  struct tm tp;
-
-  __set_errno (0);
-  if (time (&timebuf->time) == (time_t) -1 && errno != 0)
-    return -1;
-  timebuf->millitm = 0;
-
-  if (__localtime_r (&timebuf->time, &tp) == NULL)
-    return -1;
-
-  timebuf->timezone = tp.tm_gmtoff / 60;
-  timebuf->dstflag = tp.tm_isdst;
+  struct timespec ts;
+  __clock_gettime (CLOCK_REALTIME, &ts);
 
-  __set_errno (save);
+  timebuf->time = ts.tv_sec;
+  timebuf->millitm = ts.tv_nsec / 1000000;
+  timebuf->timezone = 0;
+  timebuf->dstflag = 0;
   return 0;
 }
diff --git a/time/sys/timeb.h b/time/sys/timeb.h
index b958dc3e4a..5c16f79da2 100644
--- a/time/sys/timeb.h
+++ b/time/sys/timeb.h
@@ -36,7 +36,8 @@ struct timeb
 
 /* Fill in TIMEBUF with information about the current time.  */
 
-extern int ftime (struct timeb *__timebuf);
+extern int ftime (struct timeb *__timebuf)
+  __nonnull ((1)) __attribute_deprecated__;
 
 __END_DECLS
 
diff --git a/time/tst-ftime.c b/time/tst-ftime.c
index 4b7e90cc03..39d94a1b26 100644
--- a/time/tst-ftime.c
+++ b/time/tst-ftime.c
@@ -18,6 +18,7 @@
 
 #include <sys/timeb.h>
 #include <stdio.h>
+#include <libc-diag.h>
 
 static int
 do_test (void)
@@ -29,12 +30,18 @@ do_test (void)
     {
       prev = curr;
 
+      /* ftime was deprecated on 2.31.  */
+      DIAG_PUSH_NEEDS_COMMENT;
+      DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+
       if (ftime (&curr))
         {
           printf ("ftime returned an error\n");
           return 1;
         }
 
+      DIAG_POP_NEEDS_COMMENT;
+
       if (curr.time < prev.time)
         {
           printf ("ftime's time flowed backwards\n");