Paul Eggert <[EMAIL PROTECTED]> wrote: ... > The GNU documentation says that "-a" implies "--preserve=links" and > that "--preserve-links" means "Preserve in the destination files any > links between corresponding source files." Here, Tim wants "cp -a" > to preserve in the destination the fact that the source files are > different, even though they are already hard links in the destination. > > This sounds reasonable to me, so I installed the following patch. But > I'd like someone with sharp eyes (Jim? :-) to double-check it.
Thanks. That looks fine. (belatedly :-) > In particular, I don't understand what these lines are doing in the > existing code: > > || (x->dereference == DEREF_NEVER > && ! S_ISREG (src_sb.st_mode)))) > > Why should the behavior differ here merely because the source > is (say) a character special file? It has to be different at least when the source file is a symlink and when cp is preserving this particular one. If it didn't remove such an existing destination file, the subsequent symlink call would fail. As to why it's not simply `S_ISLNK (...', i.e., || (x->dereference == DEREF_NEVER && S_ISLNK (src_sb.st_mode)))) I don't know off hand. The tests do pass with that change, so I'll probably check it in. _______________________________________________ Bug-coreutils mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/bug-coreutils