mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-10 06:03:31 +02:00
copy: prefer our hardlink to symlink emulation on OS X 10.10
* src/copy.c (CAN_HARDLINK_SYMLINKS): Don't enable use of linkat() on Darwin 14, as the gnulib fallback emulation there doesn't preserve ownership and timestamps etc. This fixes a test failure in tests/cp/link-symlink.sh * tests/cp/link-deref.sh: Adjust accordingly.
This commit is contained in:
@@ -104,7 +104,7 @@ rpl_mkfifo (char const *file, mode_t mode)
|
||||
|
||||
/* LINK_FOLLOWS_SYMLINKS is tri-state; if it is -1, we don't know
|
||||
how link() behaves, so assume we can't hardlink symlinks in that case. */
|
||||
#if defined HAVE_LINKAT || ! LINK_FOLLOWS_SYMLINKS
|
||||
#if (defined HAVE_LINKAT && ! LINKAT_SYMLINK_NOTSUP) || ! LINK_FOLLOWS_SYMLINKS
|
||||
# define CAN_HARDLINK_SYMLINKS 1
|
||||
#else
|
||||
# define CAN_HARDLINK_SYMLINKS 0
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
|
||||
print_ver_ cp
|
||||
|
||||
if grep '^#define HAVE_LINKAT 1' "$CONFIG_HEADER" > /dev/null \
|
||||
if { grep '^#define HAVE_LINKAT 1' "$CONFIG_HEADER" > /dev/null \
|
||||
&& grep '#undef LINKAT_SYMLINK_NOTSUP' "$CONFIG_HEADER" > /dev/null; } \
|
||||
|| grep '^#define LINK_FOLLOWS_SYMLINKS 0' "$CONFIG_HEADER" > /dev/null; then
|
||||
# With this config cp will attempt to linkat() to hardlink a symlink.
|
||||
# So now double check the current file system supports this operation.
|
||||
|
||||
Reference in New Issue
Block a user