gnulib: update to 776af40e0
[deliverable/binutils-gdb.git] / gnulib / import / m4 / readlink.m4
CommitLineData
9c9d63b1
PM
1# readlink.m4 serial 16
2dnl Copyright (C) 2003, 2007, 2009-2021 Free Software Foundation, Inc.
2196f55f
YQ
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gl_FUNC_READLINK],
8[
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],
9c9d63b1 26 [gl_cv_func_readlink_trailing_slash],
2196f55f
YQ
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;]])],
9c9d63b1
PM
35 [gl_cv_func_readlink_trailing_slash=yes],
36 [gl_cv_func_readlink_trailing_slash=no],
2196f55f 37 [case "$host_os" in
9c9d63b1
PM
38 # Guess yes on Linux or glibc systems.
39 linux-* | linux | *-gnu* | gnu*)
40 gl_cv_func_readlink_trailing_slash="guessing yes" ;;
41 # Guess no on AIX or HP-UX.
42 aix* | hpux*)
43 gl_cv_func_readlink_trailing_slash="guessing no" ;;
44 # If we don't know, obey --enable-cross-guesses.
45 *)
46 gl_cv_func_readlink_trailing_slash="$gl_cross_guess_normal" ;;
2196f55f
YQ
47 esac
48 ])
49 rm -f conftest.link conftest.lnk2])
9c9d63b1 50 case "$gl_cv_func_readlink_trailing_slash" in
2196f55f
YQ
51 *yes)
52 if test "$gl_cv_decl_readlink_works" != yes; then
53 REPLACE_READLINK=1
54 fi
55 ;;
56 *)
57 AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink
58 fails to recognize a trailing slash.])
59 REPLACE_READLINK=1
60 ;;
61 esac
9c9d63b1
PM
62
63 AC_CACHE_CHECK([whether readlink truncates results correctly],
64 [gl_cv_func_readlink_truncate],
65 [# We have readlink, so assume ln -s works.
66 ln -s ab conftest.link
67 AC_RUN_IFELSE(
68 [AC_LANG_PROGRAM(
69 [[#include <unistd.h>
70]], [[char c;
71 return readlink ("conftest.link", &c, 1) != 1;]])],
72 [gl_cv_func_readlink_truncate=yes],
73 [gl_cv_func_readlink_truncate=no],
74 [case "$host_os" in
75 # Guess yes on Linux or glibc systems.
76 linux-* | linux | *-gnu* | gnu*)
77 gl_cv_func_readlink_truncate="guessing yes" ;;
78 # Guess no on AIX or HP-UX.
79 aix* | hpux*)
80 gl_cv_func_readlink_truncate="guessing no" ;;
81 # If we don't know, obey --enable-cross-guesses.
82 *)
83 gl_cv_func_readlink_truncate="$gl_cross_guess_normal" ;;
84 esac
85 ])
86 rm -f conftest.link conftest.lnk2])
87 case $gl_cv_func_readlink_truncate in
88 *yes)
89 if test "$gl_cv_decl_readlink_works" != yes; then
90 REPLACE_READLINK=1
91 fi
92 ;;
93 *)
94 AC_DEFINE([READLINK_TRUNCATE_BUG], [1], [Define to 1 if readlink
95 sets errno instead of truncating a too-long link.])
96 REPLACE_READLINK=1
97 ;;
98 esac
2196f55f
YQ
99 fi
100])
101
102# Like gl_FUNC_READLINK, except prepare for separate compilation
103# (no REPLACE_READLINK, no AC_LIBOBJ).
104AC_DEFUN([gl_FUNC_READLINK_SEPARATE],
105[
106 AC_CHECK_FUNCS_ONCE([readlink])
107 gl_PREREQ_READLINK
108])
109
110# Prerequisites of lib/readlink.c.
111AC_DEFUN([gl_PREREQ_READLINK],
112[
113 :
114])
This page took 0.50157 seconds and 4 git commands to generate.