On FreeBSD 14.0 and NetBSD 10.0, the unit test 'no-dereference' fails.
How to reproduce:
Use current diffutils git master.
$ ln -s loop loop
$ mkdir subdir
$ ln -s loop subdir/loop
# This part succeeds on all platforms:
$ src/diff --no-dereference loop subdir/loop
$ echo $?
0
# This commands succeeds on all platforms except FreeBSD and NetBSD
# but fails on FreeBSD and NetBSD.
$ src/diff --no-dereference loop subdir
diff: subdir/loop: Too many links
The manual [1] says:
"If one file is a directory and the other is not, diff compares the file
in the directory whose name is that of the non-directory."
But single-stepping through the code, I don't get through code that
references 'subdir/loop'. It merely references 'subdir'.
The stack trace is:
diff.c:880
-> diff.c:1608
-> error
Bruno
[1] https://www.gnu.org/software/diffutils/manual/html_node/Invoking-diff.html