view modules/linkat @ 17787:461b92d0b2eb

linkat: wrap to handle symlinks on OS X 10.10 * m4/linkat.m4 (gl_FUNC_LINKAT): linkat() is available on Yosemite but not usable because it doesn't support creating hardlinks to symlinks. Therefore add a generic test for this capability and fallback to our emulation if linkat() fails with ENOTSUP.
author Pádraig Brady <P@draigBrady.com>
date Fri, 31 Oct 2014 18:12:15 +0000
parents c3b6b5b6bc32
children
line wrap: on
line source

Description:
linkat() function: create a hard link, relative to two directories

Files:
lib/at-func2.c
lib/linkat.c
m4/linkat.m4

Depends-on:
unistd
extensions
dirname-lgpl     [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
errno            [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
fcntl-h          [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
filenamecat-lgpl [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
link-follow      [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
areadlink        [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
at-internal      [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
dosname          [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
fstat            [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
getcwd-lgpl      [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
openat-h         [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
openat-die       [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
link             [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
lstat            [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
same-inode       [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
save-cwd         [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
symlink          [test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1]
areadlinkat      [test $REPLACE_LINKAT = 1]
fstatat          [test $REPLACE_LINKAT = 1]

configure.ac:
gl_FUNC_LINKAT
if test $HAVE_LINKAT = 0 || test $REPLACE_LINKAT = 1; then
  AC_LIBOBJ([linkat])
  AC_LIBOBJ([at-func2])
fi
gl_UNISTD_MODULE_INDICATOR([linkat])

Makefile.am:

Include:
<fcntl.h>
<unistd.h>

License:
GPL

Maintainer:
Jim Meyering, Eric Blake