From bb421be6c1174fad837973acc5e4a7bade4489db Mon Sep 17 00:00:00 2001 From: Mariusz Zaborski Date: Wed, 29 May 2024 14:32:16 +0200 Subject: libutil: move ftime to libutil It seems that there are still some applications that use ftime(3) (for example, science/siconos and sysutils/lcdproc). The issue is that we don't build libcompat as a shared library anymore. The easiest solution is to move it to libutil, until we deprecate it for good. This solution was proposed by kib@ in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257789. PR: 257789 MFC after: 1 month Reviewed by: kib (ages ago) Differential Revision: https://reviews.freebsd.org/D39994 --- lib/libcompat/4.1/ftime.3 | 78 ----------------------------------------------- lib/libcompat/4.1/ftime.c | 51 ------------------------------- lib/libcompat/Makefile | 7 +---- lib/libutil/Makefile | 6 ++-- lib/libutil/ftime.3 | 78 +++++++++++++++++++++++++++++++++++++++++++++++ lib/libutil/ftime.c | 53 ++++++++++++++++++++++++++++++++ sys/sys/timeb.h | 2 +- 7 files changed, 136 insertions(+), 139 deletions(-) delete mode 100644 lib/libcompat/4.1/ftime.3 delete mode 100644 lib/libcompat/4.1/ftime.c create mode 100644 lib/libutil/ftime.3 create mode 100644 lib/libutil/ftime.c diff --git a/lib/libcompat/4.1/ftime.3 b/lib/libcompat/4.1/ftime.3 deleted file mode 100644 index d0e3712701ff..000000000000 --- a/lib/libcompat/4.1/ftime.3 +++ /dev/null @@ -1,78 +0,0 @@ -.\" Copyright (c) 1980, 1991, 1993 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.Dd August 4, 2018 -.Dt FTIME 3 -.Os -.Sh NAME -.Nm ftime -.Nd get date and time -.Sh LIBRARY -.Lb libcompat -.Sh SYNOPSIS -.In sys/types.h -.In sys/timeb.h -.Ft int -.Fn ftime "struct timeb *tp" -.Sh DESCRIPTION -.Bf -symbolic -This interface is obsoleted by -.Xr gettimeofday 2 . -.Ef -.Pp -The -.Fn ftime -routine fills in a structure pointed to by its argument, -as defined by -.In sys/timeb.h : -.Bd -literal -offset indent -/* - * Structure returned by ftime system call - */ -struct timeb -{ - time_t time; - unsigned short millitm; - short timezone; - short dstflag; -}; -.Ed -.Pp -The structure contains the time since the epoch in seconds, -up to 1000 milliseconds of more-precise interval, -The kernel no longer maintains the timezone and dstflag info, so 0 is -always returned for these fields. -.Sh SEE ALSO -.Xr gettimeofday 2 , -.Xr settimeofday 2 , -.Xr ctime 3 , -.Xr time 3 -.Sh HISTORY -The -.Nm -function appeared in -.At v7 . diff --git a/lib/libcompat/4.1/ftime.c b/lib/libcompat/4.1/ftime.c deleted file mode 100644 index cb832e6c2526..000000000000 --- a/lib/libcompat/4.1/ftime.c +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-4-Clause - * - * Copyright (c) 1994 Christopher G. Demetriou - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Christopher G. Demetriou. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include - -int -ftime(struct timeb *tbp) -{ - struct timezone tz; - struct timeval t; - - if (gettimeofday(&t, &tz) < 0) - return (-1); - tbp->millitm = t.tv_usec / 1000; - tbp->time = t.tv_sec; - tbp->timezone = tz.tz_minuteswest; - tbp->dstflag = tz.tz_dsttime; - - return (0); -} diff --git a/lib/libcompat/Makefile b/lib/libcompat/Makefile index c1be9243e27c..884941b3a139 100644 --- a/lib/libcompat/Makefile +++ b/lib/libcompat/Makefile @@ -6,12 +6,7 @@ NO_PIC= WARNS?= 0 -.PATH: ${.CURDIR}/4.1 ${.CURDIR}/4.3 ${.CURDIR}/4.4 - -# compat 4.1 sources -SRCS+= ftime.c - -MAN+= 4.1/ftime.3 +.PATH: ${.CURDIR}/4.3 ${.CURDIR}/4.4 # compat 4.3 sources SRCS+= re_comp.c rexec.c diff --git a/lib/libutil/Makefile b/lib/libutil/Makefile index a0a2bef8e2ce..eb5907ac183a 100644 --- a/lib/libutil/Makefile +++ b/lib/libutil/Makefile @@ -11,7 +11,7 @@ LIB= util SHLIB_MAJOR= 9 SRCS= _secure_path.c auth.c cpuset.c expand_number.c flopen.c fparseln.c \ - getlocalbase.c gr_util.c \ + ftime.c getlocalbase.c gr_util.c \ hexdump.c humanize_number.c kinfo_getfile.c \ kinfo_getallproc.c kinfo_getproc.c kinfo_getvmmap.c \ kinfo_getvmobject.c kld.c \ @@ -29,8 +29,8 @@ CFLAGS+= -DINET6 CFLAGS+= -I${.CURDIR} -I${SRCTOP}/lib/libc/gen/ -MAN+= cpuset.3 expand_number.3 flopen.3 fparseln.3 getlocalbase.3 hexdump.3 \ - humanize_number.3 kinfo_getallproc.3 kinfo_getfile.3 \ +MAN+= cpuset.3 expand_number.3 flopen.3 fparseln.3 ftime.3 getlocalbase.3 \ + hexdump.3 humanize_number.3 kinfo_getallproc.3 kinfo_getfile.3 \ kinfo_getproc.3 kinfo_getvmmap.3 kinfo_getvmobject.3 kld.3 \ login_auth.3 login_cap.3 \ login_class.3 login_ok.3 login_times.3 login_tty.3 pidfile.3 \ diff --git a/lib/libutil/ftime.3 b/lib/libutil/ftime.3 new file mode 100644 index 000000000000..043bbe2ed2c3 --- /dev/null +++ b/lib/libutil/ftime.3 @@ -0,0 +1,78 @@ +.\" Copyright (c) 1980, 1991, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd May 28, 2024 +.Dt FTIME 3 +.Os +.Sh NAME +.Nm ftime +.Nd get date and time +.Sh LIBRARY +.Lb libuitl +.Sh SYNOPSIS +.In sys/types.h +.In sys/timeb.h +.Ft int +.Fn ftime "struct timeb *tp" +.Sh DESCRIPTION +.Bf -symbolic +This interface is obsoleted by +.Xr gettimeofday 2 . +.Ef +.Pp +The +.Fn ftime +routine fills in a structure pointed to by its argument, +as defined by +.In sys/timeb.h : +.Bd -literal -offset indent +/* + * Structure returned by ftime system call + */ +struct timeb +{ + time_t time; + unsigned short millitm; + short timezone; + short dstflag; +}; +.Ed +.Pp +The structure contains the time since the epoch in seconds, +up to 1000 milliseconds of more-precise interval, +The kernel no longer maintains the timezone and dstflag info, so 0 is +always returned for these fields. +.Sh SEE ALSO +.Xr gettimeofday 2 , +.Xr settimeofday 2 , +.Xr ctime 3 , +.Xr time 3 +.Sh HISTORY +The +.Nm +function appeared in +.At v7 . diff --git a/lib/libutil/ftime.c b/lib/libutil/ftime.c new file mode 100644 index 000000000000..2e72b5ef30f3 --- /dev/null +++ b/lib/libutil/ftime.c @@ -0,0 +1,53 @@ +/*- + * SPDX-License-Identifier: BSD-4-Clause + * + * Copyright (c) 1994 Christopher G. Demetriou + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Christopher G. Demetriou. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#define _IN_LIBUITL +#include + +int +ftime(struct timeb *tbp) +{ + struct timezone tz; + struct timeval t; + + if (gettimeofday(&t, &tz) < 0) + return (-1); + tbp->millitm = t.tv_usec / 1000; + tbp->time = t.tv_sec; + tbp->timezone = tz.tz_minuteswest; + tbp->dstflag = tz.tz_dsttime; + + return (0); +} diff --git a/sys/sys/timeb.h b/sys/sys/timeb.h index 09fe3a2584a5..d8aeeab83426 100644 --- a/sys/sys/timeb.h +++ b/sys/sys/timeb.h @@ -37,7 +37,7 @@ #ifndef _SYS_TIMEB_H_ #define _SYS_TIMEB_H_ -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(_IN_LIBUITL) #warning "this file includes which is deprecated" #endif -- cgit v1.3