summaryrefslogtreecommitdiffstats
path: root/usr.bin/xinstall
diff options
context:
space:
mode:
authormickey <mickey@openbsd.org>2003-11-22 14:17:32 +0000
committermickey <mickey@openbsd.org>2003-11-22 14:17:32 +0000
commit8e9ca5d78df5bb577ac36dd7a9318a52dea932e6 (patch)
tree3d25a466e9f3c224e35662981e5ad835a31dcf7e /usr.bin/xinstall
parentdaniel stumbled over a broken regress test, and it turned out that I forgot (diff)
downloadwireguard-openbsd-8e9ca5d78df5bb577ac36dd7a9318a52dea932e6.tar.xz
wireguard-openbsd-8e9ca5d78df5bb577ac36dd7a9318a52dea932e6.zip
madvise() -- take two
Diffstat (limited to 'usr.bin/xinstall')
-rw-r--r--usr.bin/xinstall/xinstall.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.bin/xinstall/xinstall.c b/usr.bin/xinstall/xinstall.c
index efd558c3804..bc231e60040 100644
--- a/usr.bin/xinstall/xinstall.c
+++ b/usr.bin/xinstall/xinstall.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xinstall.c,v 1.38 2003/11/22 13:40:28 grange Exp $ */
+/* $OpenBSD: xinstall.c,v 1.39 2003/11/22 14:17:32 mickey Exp $ */
/* $NetBSD: xinstall.c,v 1.9 1995/12/20 10:25:17 jonathan Exp $ */
/*
@@ -40,7 +40,7 @@ static char copyright[] =
#if 0
static char sccsid[] = "@(#)xinstall.c 8.1 (Berkeley) 7/21/93";
#endif
-static char rcsid[] = "$OpenBSD: xinstall.c,v 1.38 2003/11/22 13:40:28 grange Exp $";
+static char rcsid[] = "$OpenBSD: xinstall.c,v 1.39 2003/11/22 14:17:32 mickey Exp $";
#endif /* not lint */
#include <sys/param.h>
@@ -438,6 +438,8 @@ copy(int from_fd, char *from_name, int to_fd, char *to_name, off_t size,
(void)unlink(to_name);
errx(EX_OSERR, "%s: %s", from_name, strerror(serrno));
}
+ if (size)
+ madvise(p, size, MADV_SEQUENTIAL);
siz = (size_t)size;
if ((nw = write(to_fd, p, siz)) != siz) {
serrno = errno;
@@ -514,6 +516,10 @@ compare(int from_fd, const char *from_name, size_t from_len, int to_fd,
if ((p2 = mmap(NULL, length, PROT_READ, MAP_PRIVATE,
to_fd, to_off)) == MAP_FAILED)
err(EX_OSERR, "%s", to_name);
+ if (length) {
+ madvise(p1, length, MADV_SEQUENTIAL);
+ madvise(p2, length, MADV_SEQUENTIAL);
+ }
dfound = memcmp(p1, p2, length);