git: 893839b11988 - main - diff: Fix device case.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 23 Dec 2024 17:16:17 UTC
The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=893839b119880d3fe8ab18aba4563af6c80cb875 commit 893839b119880d3fe8ab18aba4563af6c80cb875 Author: Dag-Erling Smørgrav <des@FreeBSD.org> AuthorDate: 2024-12-23 17:15:57 +0000 Commit: Dag-Erling Smørgrav <des@FreeBSD.org> CommitDate: 2024-12-23 17:16:14 +0000 diff: Fix device case. We already fell back to Stone for FIFOs, but we actually need to fall back to Stone for everything except regular files, because libdiff's atomizer needs to know the size of its input in advance, and neither FIFOs nor devices can be trusted to report their size. MFC after: 1 week Reported by: mav Reviewed by: mav, allanjude Differential Revision: https://reviews.freebsd.org/D48181 --- usr.bin/diff/diffreg_new.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/diff/diffreg_new.c b/usr.bin/diff/diffreg_new.c index af9104559986..f54cd554ccad 100644 --- a/usr.bin/diff/diffreg_new.c +++ b/usr.bin/diff/diffreg_new.c @@ -314,8 +314,8 @@ openfile(const char *path, char **p, struct stat *st) bool can_libdiff(int flags) { - /* We can't use fifos with libdiff yet */ - if (S_ISFIFO(stb1.st_mode) || S_ISFIFO(stb2.st_mode)) + /* libdiff's atomizer can only deal with files */ + if (!S_ISREG(stb1.st_mode) || !S_ISREG(stb2.st_mode)) return false; /* Is this one of the supported input/output modes for diffreg_new? */