Date: Thu, 9 Jun 2016 21:57:34 +0000 (UTC) From: Jilles Tjoelker <jilles@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r301763 - in head: . tools/build Message-ID: <201606092157.u59LvYsf069153@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jilles Date: Thu Jun 9 21:57:34 2016 New Revision: 301763 URL: https://svnweb.freebsd.org/changeset/base/301763 Log: build: Add legacy support for futimens() and utimensat(). In order to allow using utimensat() in install(1), add futimens() and utimensat() to -legacy. The files futimens.c and utimensat.c are modified copies of the files under lib/libc/sys/ since the libc versions use symbols that do not exist in the libc on the build system (sys_futimens and sys_utimensat) . I expect the next non-sweeping change to both sets of files to be to delete them, anyway. This will allow reverting r299942 (which is a revert of r299850) enabling nanosecond timestamps in install(1). Reviewed by: bdrewery Added: head/tools/build/futimens.c - copied, changed from r301311, head/lib/libc/sys/futimens.c head/tools/build/stat.h (contents, props changed) head/tools/build/utimensat.c - copied, changed from r301311, head/lib/libc/sys/utimensat.c Modified: head/Makefile.inc1 head/tools/build/Makefile Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Thu Jun 9 21:19:46 2016 (r301762) +++ head/Makefile.inc1 Thu Jun 9 21:57:34 2016 (r301763) @@ -646,6 +646,8 @@ _worldtmp: .PHONY mtree -deU -f ${.CURDIR}/etc/mtree/BSD.groff.dist \ -p ${WORLDTMP}/legacy/usr >/dev/null .endif + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ + -p ${WORLDTMP}/legacy/usr/include >/dev/null mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ -p ${WORLDTMP}/usr >/dev/null mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ Modified: head/tools/build/Makefile ============================================================================== --- head/tools/build/Makefile Thu Jun 9 21:19:46 2016 (r301762) +++ head/tools/build/Makefile Thu Jun 9 21:57:34 2016 (r301763) @@ -4,9 +4,11 @@ LIB= egacy SRC= -INCSGROUPS= INCS +INCSGROUPS= INCS SYSINCS INCS= +SYSINCSDIR= ${INCLUDEDIR}/sys + BOOTSTRAPPING?= 0 _WITH_PWCACHEDB!= grep -c pwcache_groupdb /usr/include/grp.h || true @@ -33,6 +35,12 @@ SRCS+= reallocarray.c CFLAGS+= -I${.CURDIR}/../../lib/libc/include .endif +_WITH_UTIMENS!= grep -c utimensat /usr/include/sys/stat.h || true +.if ${_WITH_UTIMENS} == 0 +SYSINCS+= stat.h +SRCS+= futimens.c utimensat.c +.endif + .if empty(SRCS) SRCS= dummy.c .endif Copied and modified: head/tools/build/futimens.c (from r301311, head/lib/libc/sys/futimens.c) ============================================================================== --- head/lib/libc/sys/futimens.c Sat Jun 4 10:19:07 2016 (r301311, copy source) +++ head/tools/build/futimens.c Thu Jun 9 21:57:34 2016 (r301763) @@ -27,15 +27,16 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include "namespace.h" #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <time.h> -#include "un-namespace.h" -#include "libc_private.h" +#ifndef UTIME_NOW +#define UTIME_NOW -1 +#define UTIME_OMIT -2 +#endif int futimens(int fd, const struct timespec times[2]) @@ -44,11 +45,6 @@ futimens(int fd, const struct timespec t struct stat sb; int osreldate; - osreldate = __getosreldate(); - if (osreldate >= 1100056 || - (osreldate >= 1002506 && osreldate < 1100000)) - return (__sys_futimens(fd, times)); - if (times == NULL || (times[0].tv_nsec == UTIME_NOW && times[1].tv_nsec == UTIME_NOW)) tvp = NULL; @@ -75,7 +71,7 @@ futimens(int fd, const struct timespec t tvp = tv; if (times[0].tv_nsec == UTIME_OMIT || times[1].tv_nsec == UTIME_OMIT) { - if (_fstat(fd, &sb) == -1) + if (fstat(fd, &sb) == -1) return (-1); if (times[0].tv_nsec == UTIME_OMIT) { tv[0].tv_sec = sb.st_atim.tv_sec; Added: head/tools/build/stat.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/stat.h Thu Jun 9 21:57:34 2016 (r301763) @@ -0,0 +1,46 @@ +/*- + * Copyright (c) 2016 Jilles Tjoelker <jilles@FreeBSD.org> + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + * + * $FreeBSD$ + */ + +#ifndef _LEGACY_SYS_STAT_H_ +#define _LEGACY_SYS_STAT_H_ + +#include_next <sys/stat.h> + +#ifndef UTIME_NOW +#define UTIME_NOW -1 +#define UTIME_OMIT -2 +#endif + +__BEGIN_DECLS + +int futimens(int, const struct timespec *); +int utimensat(int, const char *, const struct timespec *, int); + +__END_DECLS + +#endif /* !_LEGACY_SYS_STAT_H_ */ Copied and modified: head/tools/build/utimensat.c (from r301311, head/lib/libc/sys/utimensat.c) ============================================================================== --- head/lib/libc/sys/utimensat.c Sat Jun 4 10:19:07 2016 (r301311, copy source) +++ head/tools/build/utimensat.c Thu Jun 9 21:57:34 2016 (r301763) @@ -27,15 +27,16 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include "namespace.h" #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include <time.h> -#include "un-namespace.h" -#include "libc_private.h" +#ifndef UTIME_NOW +#define UTIME_NOW -1 +#define UTIME_OMIT -2 +#endif int utimensat(int fd, const char *path, const struct timespec times[2], int flag) @@ -44,11 +45,6 @@ utimensat(int fd, const char *path, cons struct stat sb; int osreldate; - osreldate = __getosreldate(); - if (osreldate >= 1100056 || - (osreldate >= 1002506 && osreldate < 1100000)) - return (__sys_utimensat(fd, path, times, flag)); - if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) { errno = EINVAL; return (-1);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201606092157.u59LvYsf069153>