; doc/emacs/misc.texi (Network Security): Fix typo.
[emacs.git] / m4 / readlink.m4
blob4d0ab4836b036f76d4530f3030d1e936986fb391
1 # readlink.m4 serial 14
2 dnl Copyright (C) 2003, 2007, 2009-2018 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 AC_DEFUN([gl_FUNC_READLINK],
9   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
10   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
11   AC_CHECK_FUNCS_ONCE([readlink])
12   if test $ac_cv_func_readlink = no; then
13     HAVE_READLINK=0
14   else
15     AC_CACHE_CHECK([whether readlink signature is correct],
16       [gl_cv_decl_readlink_works],
17       [AC_COMPILE_IFELSE(
18          [AC_LANG_PROGRAM(
19            [[#include <unistd.h>
20       /* Cause compilation failure if original declaration has wrong type.  */
21       ssize_t readlink (const char *, char *, size_t);]])],
22          [gl_cv_decl_readlink_works=yes], [gl_cv_decl_readlink_works=no])])
23     dnl Solaris 9 ignores trailing slash.
24     dnl FreeBSD 7.2 dereferences only one level of links with trailing slash.
25     AC_CACHE_CHECK([whether readlink handles trailing slash correctly],
26       [gl_cv_func_readlink_works],
27       [# We have readlink, so assume ln -s works.
28        ln -s conftest.no-such conftest.link
29        ln -s conftest.link conftest.lnk2
30        AC_RUN_IFELSE(
31          [AC_LANG_PROGRAM(
32            [[#include <unistd.h>
33 ]], [[char buf[20];
34       return readlink ("conftest.lnk2/", buf, sizeof buf) != -1;]])],
35          [gl_cv_func_readlink_works=yes], [gl_cv_func_readlink_works=no],
36          [case "$host_os" in
37                              # Guess yes on Linux systems.
38             linux-* | linux) gl_cv_func_readlink_works="guessing yes" ;;
39                              # Guess yes on glibc systems.
40             *-gnu* | gnu*)   gl_cv_func_readlink_works="guessing yes" ;;
41                              # If we don't know, assume the worst.
42             *)               gl_cv_func_readlink_works="guessing no" ;;
43           esac
44          ])
45       rm -f conftest.link conftest.lnk2])
46     case "$gl_cv_func_readlink_works" in
47       *yes)
48         if test "$gl_cv_decl_readlink_works" != yes; then
49           REPLACE_READLINK=1
50         fi
51         ;;
52       *)
53         AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink
54           fails to recognize a trailing slash.])
55         REPLACE_READLINK=1
56         ;;
57     esac
58   fi
61 # Like gl_FUNC_READLINK, except prepare for separate compilation
62 # (no REPLACE_READLINK, no AC_LIBOBJ).
63 AC_DEFUN([gl_FUNC_READLINK_SEPARATE],
65   AC_CHECK_FUNCS_ONCE([readlink])
66   gl_PREREQ_READLINK
69 # Prerequisites of lib/readlink.c.
70 AC_DEFUN([gl_PREREQ_READLINK],
72   :