diff options
Diffstat (limited to 'time')
-rw-r--r-- | time/Makefile | 5 | ||||
-rw-r--r-- | time/ftime.c | 19 | ||||
-rw-r--r-- | time/sys/timeb.h | 44 | ||||
-rw-r--r-- | time/tst-ftime.c | 59 |
4 files changed, 50 insertions, 77 deletions
diff --git a/time/Makefile b/time/Makefile index a4fb13d..ab8fb33 100644 --- a/time/Makefile +++ b/time/Makefile @@ -22,7 +22,7 @@ subdir := time include ../Makeconfig -headers := time.h sys/time.h sys/timeb.h bits/time.h \ +headers := time.h sys/time.h bits/time.h \ bits/types/clockid_t.h bits/types/clock_t.h \ bits/types/struct_itimerspec.h \ bits/types/struct_timespec.h bits/types/struct_timeval.h \ @@ -45,9 +45,10 @@ aux := era alt_digit lc-time-cleanup tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \ tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \ - tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \ + tst-strptime3 bug-getdate1 tst-strptime-whitespace \ tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \ tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 +tests-internal := tst-ftime include ../Rules diff --git a/time/ftime.c b/time/ftime.c index 93f485b..be3295e 100644 --- a/time/ftime.c +++ b/time/ftime.c @@ -16,11 +16,23 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <sys/timeb.h> +#include <shlib-compat.h> + +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_33) + #include <time.h> +struct timeb + { + time_t time; /* Seconds since epoch, as from `time'. */ + unsigned short int millitm; /* Additional milliseconds. */ + short int timezone; /* Minutes west of GMT. */ + short int dstflag; /* Nonzero if Daylight Savings Time used. */ + }; + int -ftime (struct timeb *timebuf) +attribute_compat_text_section +__ftime (struct timeb *timebuf) { struct timespec ts; __clock_gettime (CLOCK_REALTIME, &ts); @@ -31,3 +43,6 @@ ftime (struct timeb *timebuf) timebuf->dstflag = 0; return 0; } + +compat_symbol (libc, __ftime, ftime, GLIBC_2_0); +#endif diff --git a/time/sys/timeb.h b/time/sys/timeb.h deleted file mode 100644 index 641c333..0000000 --- a/time/sys/timeb.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 1994-2020 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/>. */ - -#ifndef _SYS_TIMEB_H -#define _SYS_TIMEB_H 1 - -#include <features.h> - -#include <bits/types/time_t.h> - -__BEGIN_DECLS - -/* Structure returned by the `ftime' function. */ - -struct timeb - { - time_t time; /* Seconds since epoch, as from `time'. */ - unsigned short int millitm; /* Additional milliseconds. */ - short int timezone; /* Minutes west of GMT. */ - short int dstflag; /* Nonzero if Daylight Savings Time used. */ - }; - -/* Fill in TIMEBUF with information about the current time. */ - -extern int ftime (struct timeb *__timebuf) - __nonnull ((1)) __attribute_deprecated__; - -__END_DECLS - -#endif /* sys/timeb.h */ diff --git a/time/tst-ftime.c b/time/tst-ftime.c index 08916c0..6978feb 100644 --- a/time/tst-ftime.c +++ b/time/tst-ftime.c @@ -16,9 +16,23 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <sys/timeb.h> -#include <stdio.h> -#include <libc-diag.h> + +#include <shlib-compat.h> +#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_33) +#include <time.h> +#include <support/check.h> + +compat_symbol_reference (libc, ftime, ftime, GLIBC_2_0); + +struct timeb + { + time_t time; + unsigned short int millitm; + short int timezone; + short int dstflag; + }; + +extern int ftime (struct timeb *__timebuf); static int do_test (void) @@ -30,36 +44,23 @@ 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"); - return 1; - } - - if (curr.time == prev.time - && curr.millitm < prev.millitm) - { - printf ("ftime's millitm flowed backwards\n"); - return 1; - } + /* ftime was deprecated on 2.31 and removed on 2.33. */ + TEST_COMPARE (ftime (&curr), 0); + TEST_VERIFY_EXIT (curr.time >= prev.time); + if (curr.time == prev.time) + TEST_VERIFY_EXIT (curr.millitm >= prev.millitm); if (curr.time > prev.time) sec ++; } return 0; } +#else +static int +do_test (void) +{ + return EXIT_UNSUPPORTED; +} +#endif -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" +#include <support/test-driver.c> |