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]
+++ /dev/null
-/* 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;
-}
+++ /dev/null
-/* Linux defines the ftime system call but doesn't actually implement
- it. Use the BSD implementation. */
-#include <sysdeps/unix/bsd/ftime.c>
-/* 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
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;
}
/* 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
#include <sys/timeb.h>
#include <stdio.h>
+#include <libc-diag.h>
static int
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");