summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
authorEmmanuel Dreyfus <manu@netbsd.org>2013-12-26 09:54:01 +0100
committerVijay Bellur <vbellur@redhat.com>2014-01-02 22:00:37 -0800
commit652af839a0e332d081ed5a1beb58e8dc6ea88bfd (patch)
tree3ad9c207052c947209fe7889c47be0ca5004997f /libglusterfs
parentea88a6fa28f842ea777ec850fde746573ded7b33 (diff)
Use linkat() instead of link() for portability sake
This is a backport of Iccd27ac076b7a74e40dcbaa1c4762fd3ad59da5f POSIX does not says wether link(2) on symlink should link on symlink itself or on target. Linux use symlink, most other systems use target. Using linkat(2) allows the behavior to be specified, so that the behavior is portable. Also fix configure test for NetBSD linkata(2), which ceased to work. BUG: 764655 Change-Id: I7cf9e62ea19c7eb356935c11b480cf637c83126b Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org> Reviewed-on: http://review.gluster.org/6594 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'libglusterfs')
-rw-r--r--libglusterfs/src/syscall.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libglusterfs/src/syscall.c b/libglusterfs/src/syscall.c
index e8954cc237c..a619f9c41a6 100644
--- a/libglusterfs/src/syscall.c
+++ b/libglusterfs/src/syscall.c
@@ -120,7 +120,12 @@ sys_rename (const char *oldpath, const char *newpath)
int
sys_link (const char *oldpath, const char *newpath)
{
+#ifdef HAVE_LINKAT
+ /* see HAVE_LINKAT in xlators/storage/posix/src/posix.c */
+ return linkat (AT_FDCWD, oldpath, AT_FDCWD, newpath, 0);
+#else
return link (oldpath, newpath);
+#endif
}