link-follow: ensure correct result
authorEric Blake <ebb9@byu.net>
Tue, 22 Sep 2009 12:24:25 +0000 (06:24 -0600)
committerEric Blake <ebb9@byu.net>
Tue, 22 Sep 2009 12:34:26 +0000 (06:34 -0600)
* m4/fcntl_h.m4 (gl_FCNTL_H): Clean up temporary file.
* m4/link-follow.m4 (gl_FUNC_LINK_FOLLOWS_SYMLINK): Likewise, and
distinguish between possible failures.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
m4/fcntl_h.m4
m4/link-follow.m4

index 7c6f358..33dc8ae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-09-22  Eric Blake  <ebb9@byu.net>
+
+       link-follow: ensure correct result
+       * m4/fcntl_h.m4 (gl_FCNTL_H): Clean up temporary file.
+       * m4/link-follow.m4 (gl_FUNC_LINK_FOLLOWS_SYMLINK): Likewise, and
+       distinguish between possible failures.
+
 2009-09-21  Eric Blake  <ebb9@byu.net>
 
        fts: avoid compiler warning
index 5eed088..118a4fa 100644 (file)
@@ -1,4 +1,4 @@
-# serial 4
+# serial 5
 # Configure fcntl.h.
 dnl Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
@@ -38,6 +38,7 @@ AC_DEFUN([gl_FCNTL_H],
              if (symlink (".", sym) != 0
                  || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
                status |= 32;
+             unlink (sym);
            }
            {
              static char const file[] = "confdefs.h";
index 48885ea..d2c5dd9 100644 (file)
@@ -1,4 +1,4 @@
-# serial 14
+# serial 15
 dnl Run a program to determine whether link(2) follows symlinks.
 dnl Set LINK_FOLLOWS_SYMLINKS accordingly.
 
@@ -47,16 +47,16 @@ AC_DEFUN([gl_FUNC_LINK_FOLLOWS_SYMLINK],
 
          /* Create a symlink to the regular file. */
          if (symlink (file, sym))
-           abort ();
+           return 2;
 
          /* Create a hard link to that symlink.  */
          if (link (sym, hard))
-           abort ();
+           return 3;
 
          if (lstat (hard, &sb_hard))
-           abort ();
+           return 4;
          if (lstat (file, &sb_file))
-           abort ();
+           return 5;
 
          /* If the dev/inode of hard and file are the same, then
             the link call followed the symlink.  */
@@ -67,6 +67,7 @@ AC_DEFUN([gl_FUNC_LINK_FOLLOWS_SYMLINK],
        [gl_cv_func_link_follows_symlink=yes], dnl Followed link/compile failed
        [gl_cv_func_link_follows_symlink=unknown] dnl We're cross compiling.
       )
+      rm -f conftest.file conftest.sym conftest.hard
     ])
     case $gl_cv_func_link_follows_symlink in
       yes) gl_link_follows_symlinks=1 ;;