Add comment.
[gnulib.git] / m4 / link-follow.m4
index a57ab88..813369b 100644 (file)
@@ -1,13 +1,24 @@
-#serial 1
+#serial 5
 dnl Run a program to determine whether whether link(2) follows symlinks.
 dnl Set LINK_FOLLOWS_SYMLINKS accordingly.
 
-AC_DEFUN(jm_AC_FUNC_LINK_FOLLOWS_SYMLINK,
+# Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_AC_FUNC_LINK_FOLLOWS_SYMLINK],
 [dnl
-  AC_CACHE_CHECK([whether link(2) follows symlinks],
+  AC_CACHE_CHECK(
+    [whether link(2) dereferences a symlink specified with a trailing slash],
                 jm_ac_cv_func_link_follows_symlink,
   [
-    # Create a regular file, `conftest.file'.
+    dnl poor-man's AC_REQUIRE: FIXME: repair this once autoconf-3 provides
+    dnl the appropriate framework.
+    test -z "$ac_cv_header_unistd_h" \
+      && AC_CHECK_HEADERS(unistd.h)
+
+    # Create a regular file.
     echo > conftest.file
     AC_TRY_RUN(
       [
@@ -29,11 +40,11 @@ AC_DEFUN(jm_AC_FUNC_LINK_FOLLOWS_SYMLINK,
          const char *hard = "conftest.hard";
          struct stat sb_file, sb_hard;
 
-         /* Create a symlink `conftest.sym' to it. */
+         /* Create a symlink to the regular file. */
          if (symlink (file, sym))
            abort ();
 
-         /* Create a hard link `conftest.hard' to that symlink.  */
+         /* Create a hard link to that symlink.  */
          if (link (sym, hard))
            abort ();
 
@@ -49,7 +60,11 @@ AC_DEFUN(jm_AC_FUNC_LINK_FOLLOWS_SYMLINK,
       ],
       jm_ac_cv_func_link_follows_symlink=yes,
       jm_ac_cv_func_link_follows_symlink=no,
-      jm_ac_cv_func_link_follows_symlink=yes, We're cross compiling.
+      jm_ac_cv_func_link_follows_symlink=yes dnl We're cross compiling.
     )
   ])
+  if test $jm_ac_cv_func_link_follows_symlink = yes; then
+    AC_DEFINE(LINK_FOLLOWS_SYMLINKS, 1,
+      [Define if `link(2)' dereferences symbolic links.])
+  fi
 ])