On FreeBSD 7.3, test #39 "extract over symlinks" fails. Specifically,
it's this snippet of extrac13
ln -s target1 dst2/file1
echo target1 >dst2/target1
tar --overwrite -xf archive.tar -C dst2 --warning=no-timestamp
that errors out:
tar: ./file1: Cannot open: Too many links
ktrace shows that an open() call with O_NOFOLLOW set fails...
44351 tar CALL
open(0x800c1b100,O_WRONLY|O_NONBLOCK|O_NOFOLLOW|O_CREAT|O_TRUNC|O_NOCTTY,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
44351 tar NAMI "./file1"
44351 tar RET open -1 errno 31 Too many links
... and tar proceeds to the error message. This open() behavior
is expected, so I'm unclear what GNU tar expects.
I compared with OpenBSD, where this test doesn't fail, and ktrace there
shows a sequence
open("./file1", ...) => ELOOP
lstat("./file1", ...)
unlink("./file1")
open("./file1", ...) => success
--
Christian "naddy" Weisgerber [email protected]