file-has-acl: revert both recent changes, 80af92af and 95f7c57f
authorJim Meyering <meyering@redhat.com>
Wed, 5 Oct 2011 13:06:49 +0000 (15:06 +0200)
committerJim Meyering <meyering@redhat.com>
Wed, 5 Oct 2011 13:06:49 +0000 (15:06 +0200)
* lib/file-has-acl.c: While the 2011-10-03 change does fix the
ls -lL regression introduced in coreutils-8.12, it does so at the
cost of an additional stat call in the common case.  Besides, now
that the kernel change that prompted commit 95f7c57f has been reverted
(see https://bugzilla.redhat.com/show_bug.cgi?id=720325#c24)
we have no use for commit 95f7c57f, "file-has-acl: use
acl_extended_file_nofollow if available".

ChangeLog
lib/acl-internal.h
lib/file-has-acl.c
m4/acl.m4

index 6715d96..8d66d56 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2011-10-05  Jim Meyering  <meyering@redhat.com>
+
+       file-has-acl: revert both recent changes, 80af92af and 95f7c57f
+       * lib/file-has-acl.c: While the 2011-10-03 change does fix the
+       ls -lL regression introduced in coreutils-8.12, it does so at the
+       cost of an additional stat call in the common case.  Besides, now
+       that the kernel change that prompted commit 95f7c57f has been reverted
+       (see https://bugzilla.redhat.com/show_bug.cgi?id=720325#c24)
+       we have no use for commit 95f7c57f, "file-has-acl: use
+       acl_extended_file_nofollow if available".
+
 2011-10-03  Kamil Dudka  <kdudka@redhat.com>
 
        file-has-acl: revert unintended change in behavior of ls -L
index 4f7166e..7a105c8 100644 (file)
@@ -133,12 +133,6 @@ rpl_acl_set_fd (int fd, acl_t acl)
 #  endif
 
 /* Linux-specific */
-#  ifndef HAVE_ACL_EXTENDED_FILE_NOFOLLOW
-#   define HAVE_ACL_EXTENDED_FILE_NOFOLLOW false
-#   define acl_extended_file_nofollow(name) (-1)
-#  endif
-
-/* Linux-specific */
 #  ifndef HAVE_ACL_FROM_MODE
 #   define HAVE_ACL_FROM_MODE false
 #   define acl_from_mode(mode) (NULL)
index 532cafc..4ff2808 100644 (file)
@@ -437,34 +437,6 @@ acl_nontrivial (int count, struct acl *entries)
 #endif
 
 
-/* acl_extended_file() tests whether a file has an ACL.  But it can trigger
-   unnecessary autofs mounts.  In newer versions of libacl, a function
-   acl_extended_file_nofollow() is available that uses lgetxattr() and
-   therefore does not have this problem.  It is equivalent to
-   acl_extended_file(), except on symbolic links.  */
-
-static int
-acl_extended_file_wrap (char const *name)
-{
-  if ( ! HAVE_ACL_EXTENDED_FILE)
-    return -1;
-
-  if (HAVE_ACL_EXTENDED_FILE_NOFOLLOW)
-    {
-      struct stat sb;
-      if (! lstat (name, &sb) && ! S_ISLNK (sb.st_mode))
-        /* acl_extended_file_nofollow() uses lgetxattr() in order to
-           prevent unnecessary mounts.  It returns the same result as
-           acl_extended_file() since we already know that NAME is not a
-           symbolic link at this point (modulo the TOCTTOU race condition).  */
-        return acl_extended_file_nofollow (name);
-    }
-
-  /* fallback for symlinks and old versions of libacl */
-  return acl_extended_file (name);
-}
-
-
 /* Return 1 if NAME has a nontrivial access control list, 0 if NAME
    only has no or a base access control list, and -1 (setting errno)
    on error.  SB must be set to the stat buffer of NAME, obtained
@@ -487,7 +459,7 @@ file_has_acl (char const *name, struct stat const *sb)
           /* On Linux, acl_extended_file is an optimized function: It only
              makes two calls to getxattr(), one for ACL_TYPE_ACCESS, one for
              ACL_TYPE_DEFAULT.  */
-          ret = acl_extended_file_wrap (name);
+          ret = acl_extended_file (name);
         }
       else /* FreeBSD, MacOS X, IRIX, Tru64 */
         {
index ecf0384..d6a448a 100644 (file)
--- a/m4/acl.m4
+++ b/m4/acl.m4
@@ -33,7 +33,7 @@ AC_DEFUN([gl_FUNC_ACL],
            AC_CHECK_FUNCS(
              [acl_get_file acl_get_fd acl_set_file acl_set_fd \
               acl_free acl_from_mode acl_from_text \
-              acl_delete_def_file acl_extended_file acl_extended_file_nofollow \
+              acl_delete_def_file acl_extended_file \
               acl_delete_fd_np acl_delete_file_np \
               acl_copy_ext_native acl_create_entry_np \
               acl_to_short_text acl_free_text])