cp: Drop test helper
Now that stat(1) can report whether a file is sparse, we no longer need a helper program for our tests. Sponsored by: Klara, Inc. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D52482
This commit is contained in:
@@ -51,6 +51,9 @@
|
|||||||
# xargs -n1 | sort | uniq -d;
|
# xargs -n1 | sort | uniq -d;
|
||||||
# done
|
# done
|
||||||
|
|
||||||
|
# 20250911: This tool is no longer needed
|
||||||
|
OLD_FILES+=usr/tests/bin/cp/sparse
|
||||||
|
|
||||||
# 20250826: Remove a misspelled manual
|
# 20250826: Remove a misspelled manual
|
||||||
OLD_FILES+=usr/share/man/man3/sysdecode_syscallnames.3.gz
|
OLD_FILES+=usr/share/man/man3/sysdecode_syscallnames.3.gz
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
PACKAGE= tests
|
PACKAGE= tests
|
||||||
|
|
||||||
ATF_TESTS_SH= cp_test
|
ATF_TESTS_SH= cp_test
|
||||||
PROGS+= sparse
|
|
||||||
BINDIR= ${TESTSDIR}
|
|
||||||
|
|
||||||
.include <bsd.test.mk>
|
.include <bsd.test.mk>
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ samefile_body()
|
|||||||
|
|
||||||
file_is_sparse()
|
file_is_sparse()
|
||||||
{
|
{
|
||||||
atf_check ${0%/*}/sparse "$1"
|
atf_check -o match:"^[0-9]+-[0-9]" stat -h "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
files_are_equal()
|
files_are_equal()
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
/*-
|
|
||||||
* Copyright (c) 2023 Klara, Inc.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <err.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sysexits.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
static bool verbose;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns true if the file named by its argument is sparse, i.e. if
|
|
||||||
* seeking to SEEK_HOLE returns a different value than seeking to
|
|
||||||
* SEEK_END.
|
|
||||||
*/
|
|
||||||
static bool
|
|
||||||
sparse(const char *filename)
|
|
||||||
{
|
|
||||||
off_t hole, end;
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
if ((fd = open(filename, O_RDONLY)) < 0 ||
|
|
||||||
(hole = lseek(fd, 0, SEEK_HOLE)) < 0 ||
|
|
||||||
(end = lseek(fd, 0, SEEK_END)) < 0)
|
|
||||||
err(1, "%s", filename);
|
|
||||||
close(fd);
|
|
||||||
if (end > hole) {
|
|
||||||
if (verbose)
|
|
||||||
printf("%s: hole at %zu\n", filename, (size_t)hole);
|
|
||||||
return (true);
|
|
||||||
}
|
|
||||||
return (false);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
usage(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
fprintf(stderr, "usage: sparse [-v] file [...]\n");
|
|
||||||
exit(EX_USAGE);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int opt, rv;
|
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "v")) != -1) {
|
|
||||||
switch (opt) {
|
|
||||||
case 'v':
|
|
||||||
verbose = true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
usage();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
argc -= optind;
|
|
||||||
argv += optind;
|
|
||||||
if (argc == 0)
|
|
||||||
usage();
|
|
||||||
rv = EXIT_SUCCESS;
|
|
||||||
while (argc-- > 0)
|
|
||||||
if (!sparse(*argv++))
|
|
||||||
rv = EXIT_FAILURE;
|
|
||||||
exit(rv);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user