summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2011-10-05 15:06:49 +0200
committerJim Meyering <meyering@redhat.com>2011-10-05 15:06:49 +0200
commitd813b688732c3a0da947f91cbb19cb78a627209e (patch)
tree267bed7833a4182a8943cd1507b7345f3e06a7b5 /lib
parent80af92afd10f9ed1c3621432145baf4a32ab5cea (diff)
downloadgnulib-d813b688732c3a0da947f91cbb19cb78a627209e.tar.gz
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".
Diffstat (limited to 'lib')
-rw-r--r--lib/acl-internal.h6
-rw-r--r--lib/file-has-acl.c30
2 files changed, 1 insertions, 35 deletions
diff --git a/lib/acl-internal.h b/lib/acl-internal.h
index 4f7166e4e9..7a105c8de2 100644
--- a/lib/acl-internal.h
+++ b/lib/acl-internal.h
@@ -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)
diff --git a/lib/file-has-acl.c b/lib/file-has-acl.c
index 532cafca71..4ff2808a4a 100644
--- a/lib/file-has-acl.c
+++ b/lib/file-has-acl.c
@@ -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 */
{