warnings: fix compilation with old autoconf
[gnulib/ericb.git] / m4 / symlinkat.m4
blobb1a8a99323ec02e4b483ae85d98ab4d69c385963
1 # serial 7
2 # See if we need to provide symlinkat replacement.
4 dnl Copyright (C) 2009-2017 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_SYMLINKAT],
13   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
14   AC_REQUIRE([gl_FUNC_OPENAT])
15   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
16   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
17   AC_CHECK_FUNCS_ONCE([symlinkat])
18   if test $ac_cv_func_symlinkat = no; then
19     HAVE_SYMLINKAT=0
20   else
21     AC_CACHE_CHECK([whether symlinkat handles trailing slash correctly],
22       [gl_cv_func_symlinkat_works],
23       [AC_RUN_IFELSE(
24          [AC_LANG_PROGRAM(
25            [[#include <fcntl.h>
26              #include <unistd.h>
27            ]],
28            [[int result = 0;
29              if (!symlinkat ("a", AT_FDCWD, "conftest.link/"))
30                result |= 1;
31              if (symlinkat ("conftest.f", AT_FDCWD, "conftest.lnk2"))
32                result |= 2;
33              else if (!symlinkat ("a", AT_FDCWD, "conftest.lnk2/"))
34                result |= 4;
35              return result;
36            ]])],
37          [gl_cv_func_symlinkat_works=yes],
38          [gl_cv_func_symlinkat_works=no],
39          [case "$host_os" in
40                     # Guess yes on glibc systems.
41             *-gnu*) gl_cv_func_symlinkat_works="guessing yes" ;;
42                     # If we don't know, assume the worst.
43             *)      gl_cv_func_symlinkat_works="guessing no" ;;
44           esac
45          ])
46       rm -f conftest.f conftest.link conftest.lnk2])
47     case "$gl_cv_func_symlinkat_works" in
48       *yes) ;;
49       *)
50         REPLACE_SYMLINKAT=1
51         ;;
52     esac
53   fi