aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--sysdeps/unix/bsd/ftime.c40
-rw-r--r--sysdeps/unix/sysv/linux/ftime.c3
-rw-r--r--time/ftime.c26
-rw-r--r--time/sys/timeb.h3
-rw-r--r--time/tst-ftime.c7
6 files changed, 21 insertions, 61 deletions
diff --git a/NEWS b/NEWS
index b066c75..7e9d36e 100644
--- a/NEWS
+++ b/NEWS
@@ -58,6 +58,9 @@ Deprecated and removed features, and other changes affecting compatibility:
settimeofday available to newly linked binaries after there is a
replacement for Linux's time-zone-like offset API.
+* The obsolete functions ftime has been deprecated and will be removed from
+ a future version of glibc. Application should use clock_gettime instead.
+
Changes to build and runtime requirements:
[Add changes to build and runtime requirements here]
diff --git a/sysdeps/unix/bsd/ftime.c b/sysdeps/unix/bsd/ftime.c
deleted file mode 100644
index e1f20bc..0000000
--- a/sysdeps/unix/bsd/ftime.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* 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
- 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
- <https://www.gnu.org/licenses/>. */
-
-#include <sys/timeb.h>
-#include <sys/time.h>
-
-int
-ftime (struct timeb *timebuf)
-{
- struct timeval tv;
- struct timezone tz;
-
- if (__gettimeofday (&tv, &tz) < 0)
- return -1;
-
- timebuf->time = tv.tv_sec;
- timebuf->millitm = (tv.tv_usec + 500) / 1000;
- if (timebuf->millitm == 1000)
- {
- ++timebuf->time;
- timebuf->millitm = 0;
- }
- timebuf->timezone = tz.tz_minuteswest;
- timebuf->dstflag = tz.tz_dsttime;
- return 0;
-}
diff --git a/sysdeps/unix/sysv/linux/ftime.c b/sysdeps/unix/sysv/linux/ftime.c
deleted file mode 100644
index 5a5949f..0000000
--- a/sysdeps/unix/sysv/linux/ftime.c
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Linux defines the ftime system call but doesn't actually implement
- it. Use the BSD implementation. */
-#include <sysdeps/unix/bsd/ftime.c>
diff --git a/time/ftime.c b/time/ftime.c
index 8bedc0d..b4bd58e 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 b958dc3..5c16f79 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 4b7e90c..39d94a1 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");