diff options
author | Zack Weinberg <zackw@panix.com> | 2019-08-16 20:56:02 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2020-01-06 15:31:48 -0500 |
commit | 9ac2398ef958e164ecbb918547aa493818a22942 (patch) | |
tree | a4f8e84d6b140e003009bf409457756f59802469 | |
parent | cbce69e70dc4b04fefcc7257e593733b8b03856c (diff) | |
download | glibc-9ac2398ef958e164ecbb918547aa493818a22942.tar.gz glibc-9ac2398ef958e164ecbb918547aa493818a22942.tar.xz glibc-9ac2398ef958e164ecbb918547aa493818a22942.zip |
Demote ftime to a compat symbol; don’t install sys/timeb.h.
ftime is an obsolete variation on gettimeofday, offering only millisecond time resolution; it was probably a system call in ooold versions of BSD Unix. It is the only function declared by sys/timeb.h. It was deprecated in POSIX.1-2001 and removed from POSIX.1-2008. In glibc 2.31, we marked its declaration with __attribute_deprecated__. Demote it to a compat symbol and stop installing sys/timeb.h. Remove the minimal test of it (time/tst-ftime.c). Rename time/tst-ftime_l.c to tst-strftime_l.c; this test program has never had anything to do with ftime, it tests strftime_l.
-rw-r--r-- | conform/Makefile | 9 | ||||
-rw-r--r-- | time/Makefile | 8 | ||||
-rw-r--r-- | time/ftime.c | 17 | ||||
-rw-r--r-- | time/sys/timeb.h | 44 | ||||
-rw-r--r-- | time/tst-ftime.c | 65 | ||||
-rw-r--r-- | time/tst-strftime_l.c (renamed from time/tst-ftime_l.c) | 0 |
6 files changed, 29 insertions, 114 deletions
diff --git a/conform/Makefile b/conform/Makefile index 0b5c4cb8ce..2f986ab977 100644 --- a/conform/Makefile +++ b/conform/Makefile @@ -241,3 +241,12 @@ test-xfail-XPG42/ndbm.h/linknamespace = yes test-xfail-UNIX98/ndbm.h/linknamespace = yes test-xfail-XOPEN2K/ndbm.h/linknamespace = yes test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes + +# Header no longer provided by glibc (obsoleted in newer POSIX +# standards). +test-xfail-UNIX98/sys/timeb.h/conform = yes +test-xfail-UNIX98/sys/timeb.h/linknamespace = yes +test-xfail-XOPEN2K/sys/timeb.h/conform = yes +test-xfail-XOPEN2K/sys/timeb.h/linknamespace = yes +test-xfail-XPG42/sys/timeb.h/conform = yes +test-xfail-XPG42/sys/timeb.h/linknamespace = yes diff --git a/time/Makefile b/time/Makefile index a4fb13d6a3..c72abed005 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 \ @@ -43,9 +43,9 @@ routines := offtime asctime clock ctime ctime_r difftime \ 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-getdate tst-mktime tst-mktime2 tst-strftime tst-strftime_l \ 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 @@ -59,7 +59,7 @@ LOCALES := de_DE.ISO-8859-1 en_US.ISO-8859-1 ja_JP.EUC-JP fr_FR.UTF-8 \ nan_TW.UTF-8 lzh_TW.UTF-8 include ../gen-locales.mk -$(objpfx)tst-ftime_l.out: $(gen-locales) +$(objpfx)tst-strftime_l.out: $(gen-locales) $(objpfx)tst-strptime.out: $(gen-locales) $(objpfx)tst-strftime2.out: $(gen-locales) $(objpfx)tst-strftime3.out: $(gen-locales) diff --git a/time/ftime.c b/time/ftime.c index 93f485bbf7..0bbd923d70 100644 --- a/time/ftime.c +++ b/time/ftime.c @@ -16,10 +16,22 @@ 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_32) + #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 +attribute_compat_text_section ftime (struct timeb *timebuf) { struct timespec 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 641c333450..0000000000 --- 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 deleted file mode 100644 index 08916c0c65..0000000000 --- a/time/tst-ftime.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Verify that ftime is sane. - Copyright (C) 2014-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/>. */ - -#include <sys/timeb.h> -#include <stdio.h> -#include <libc-diag.h> - -static int -do_test (void) -{ - struct timeb prev, curr = {.time = 0, .millitm = 0}; - int sec = 0; - - while (sec != 3) - { - 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; - } - - if (curr.time > prev.time) - sec ++; - } - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/time/tst-ftime_l.c b/time/tst-strftime_l.c index 6690efeb9c..6690efeb9c 100644 --- a/time/tst-ftime_l.c +++ b/time/tst-strftime_l.c |