1# readlink.m4 serial 12 2dnl Copyright (C) 2003, 2007, 2009-2014 Free Software Foundation, Inc. 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], 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 glibc systems. 38 *-gnu*) gl_cv_func_readlink_works="guessing yes" ;; 39 # If we don't know, assume the worst. 40 *) gl_cv_func_readlink_works="guessing no" ;; 41 esac 42 ]) 43 rm -f conftest.link conftest.lnk2]) 44 case "$gl_cv_func_readlink_works" in 45 *yes) 46 if test "$gl_cv_decl_readlink_works" != yes; then 47 REPLACE_READLINK=1 48 fi 49 ;; 50 *) 51 AC_DEFINE([READLINK_TRAILING_SLASH_BUG], [1], [Define to 1 if readlink 52 fails to recognize a trailing slash.]) 53 REPLACE_READLINK=1 54 ;; 55 esac 56 fi 57]) 58 59# Like gl_FUNC_READLINK, except prepare for separate compilation 60# (no REPLACE_READLINK, no AC_LIBOBJ). 61AC_DEFUN([gl_FUNC_READLINK_SEPARATE], 62[ 63 AC_CHECK_FUNCS_ONCE([readlink]) 64 gl_PREREQ_READLINK 65]) 66 67# Prerequisites of lib/readlink.c. 68AC_DEFUN([gl_PREREQ_READLINK], 69[ 70 : 71]) 72