2 # See if we need to provide linkat replacement.
4 dnl Copyright (C) 2009-2010 Free Software Foundation, Inc.
5 dnl This file is free software; the Free Software Foundation
6 dnl gives unlimited permission to copy and/or distribute it,
7 dnl with or without modifications, as long as this notice is preserved.
9 # Written by Eric Blake.
11 AC_DEFUN([gl_FUNC_LINKAT],
13 AC_REQUIRE([gl_FUNC_OPENAT])
14 AC_REQUIRE([gl_FUNC_LINK])
15 AC_REQUIRE([gl_FUNC_LINK_FOLLOWS_SYMLINK])
16 AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
17 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
18 AC_CHECK_FUNCS_ONCE([linkat symlink])
19 AC_CHECK_HEADERS_ONCE([sys/param.h])
20 if test $ac_cv_func_linkat = no; then
25 AC_CACHE_CHECK([whether linkat(,AT_SYMLINK_FOLLOW) works],
26 [gl_cv_func_linkat_follow],
27 [rm -rf conftest.f1 conftest.f2
29 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
33 /* Linux added linkat in 2.6.16, but did not add AT_SYMLINK_FOLLOW
34 until 2.6.18. Always replace linkat to support older kernels. */
37 ]], [return linkat (AT_FDCWD, "conftest.f1", AT_FDCWD, "conftest.f2",
38 AT_SYMLINK_FOLLOW);])],
39 [gl_cv_func_linkat_follow=yes],
40 [gl_cv_func_linkat_follow="need runtime check"])
41 rm -rf conftest.f1 conftest.f2])
42 if test "$gl_cv_func_linkat_follow" != yes; then