On 10/30/2013 01:13 PM, Bernhard Voelker wrote: > Thanks again for looking into this. It's really quite complex. > I'll come up with the test (old vs. new) cases soon. Okay, here we go: the attached patch is updated regarding the issues you mentioned. I furthermore tweaked the NEWS entry: * instead of just mentioning the --dereference option, mention both the -L and -H options explicitly. * add a note that "cp -l dangling" and "cp -l symlink-to-dir" now create hard links as expected - cp doesn't try to dereference the src anymore which would lead to different error diagnostics in the two cases [*]. Then, I created a few test cases to check the changes in behaviour of cp-8.21 against the changed cp. It runs various combinations of the options -l, -s, -R, -H, -L, -P and --preserve=links on symlinks to a file ('filelink'), to a directory ('dirlink') and on a dangling symlink ('danglink'). The script is already ugly enough, so I omitted checking the files, dir and links in the subdirectory for changes. The changes so far - 12 out of 144 - are: $ grep "DIFFERENCE in Test: " testit.log | sed 's/^.*: //' cp -L -l filelink ... cp -L -l --preserve=links filelink ... cp -L -l -R filelink ... cp -L -l -R --preserve=links filelink ... cp -H -l filelink ... cp -H -l --preserve=links filelink ... cp -H -l -R filelink ... cp -H -l -R --preserve=links filelink ... cp -l dirlink ... cp -l --preserve=links dirlink ... cp -l danglink ... cp -l --preserve=links danglink ... I think these are all okay. [*] IMO even the 4 latter changes are okay and don't contradict to POSIX: --link is not specified by POSIX. BTW: The failures "can make relative symbolic links only in current directory" for e.g. "cp -L -s -R dirlink" are interesting but a different case, i.e., cp's behavior didn't change. WDYT? Finally, the testsuite is still broken (tests/cp/same-file), and new tests for "cp -l[LH]" are also still missing. Have a nice day, Berny