-# unlink.m4 serial 4
+# unlink.m4 serial 5
dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
AC_REQUIRE([gl_AC_DOS])
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST])
- dnl Detect Solaris 9 and FreeBSD 7.2 bug.
+ dnl Detect FreeBSD 7.2, AIX 7.1, Solaris 9 bug.
AC_CACHE_CHECK([whether unlink honors trailing slashes],
[gl_cv_func_unlink_honors_slashes],
[touch conftest.file
rm -f conftest.file conftest.lnk])
dnl Detect MacOS X 10.5.6 bug: On read-write HFS mounts, unlink("..") or
dnl unlink("../..") succeeds without doing anything.
- AC_CACHE_CHECK([whether unlink of a parent directory fails is it should],
+ AC_CACHE_CHECK([whether unlink of a parent directory fails as it should],
[gl_cv_func_unlink_parent_fails],
[case "$host_os" in
darwin*)
+ dnl Try to unlink a subdirectory of /tmp, because /tmp is usually on a
+ dnl HFS mount on MacOS X. Use a subdirectory, owned by the current
+ dnl user, because otherwise unlink() may fail due to permissions
+ dnl reasons, and because when running as root we don't want to risk
+ dnl destroying the entire /tmp.
if {
# Use the mktemp program if available. If not available, hide the error
# message.
(umask 077 && mkdir "$tmp")
}; then
mkdir "$tmp/subdir"
- export tmp
+ GL_SUBDIR_FOR_UNLINK="$tmp/subdir"
+ export GL_SUBDIR_FOR_UNLINK
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdlib.h>
#include <unistd.h>
int main ()
{
- if (chdir (getenv ("tmp")) != 0)
+ if (chdir (getenv ("GL_SUBDIR_FOR_UNLINK")) != 0)
return 1;
return unlink ("..") == 0;
}
[gl_cv_func_unlink_parent_fails=yes],
[gl_cv_func_unlink_parent_fails=no],
[gl_cv_func_unlink_parent_fails="guessing no"])
+ unset GL_SUBDIR_FOR_UNLINK
rm -rf "$tmp"
- unset tmp
else
gl_cv_func_unlink_parent_fails="guessing no"
fi