Don't test the ACL_TYPE_DEFAULT ACL on OSF/1.
authorBruno Haible <bruno@clisp.org>
Sun, 8 Jun 2008 03:08:56 +0000 (05:08 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 8 Jun 2008 03:08:56 +0000 (05:08 +0200)
ChangeLog
lib/file-has-acl.c

index e9e48fa..9d4305e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2008-06-07  Bruno Haible  <bruno@clisp.org>
 
+       Improve support for Tru64 ACLs.
+       * lib/file-has-acl.c (file_has_acl): Don't test the ACL_TYPE_DEFAULT
+       ACL on OSF/1.
+
+2008-06-07  Bruno Haible  <bruno@clisp.org>
+
        Add support for MacOS X ACLs.
        * lib/file-has-acl.c (file_has_acl): Use ACL_TYPE_EXTENDED instead of
        ACL_TYPE_ACCESS and ACL_TYPE_DEFAULT.
index f3d8bfd..53920a1 100644 (file)
@@ -159,6 +159,16 @@ file_has_acl (char const *name, struct stat const *sb)
              saved_errno = errno;
              acl_free (acl);
              errno = saved_errno;
+#   if HAVE_ACL_FREE_TEXT /* Tru64 */
+             /* On OSF/1, acl_get_file (name, ACL_TYPE_DEFAULT) always
+                returns NULL with errno not set.  There is no point in
+                making this call.  */
+#   else /* FreeBSD, IRIX */
+             /* On Linux, FreeBSD, IRIX, acl_get_file (name, ACL_TYPE_ACCESS)
+                and acl_get_file (name, ACL_TYPE_DEFAULT) on a directory
+                either both succeed or both fail; it depends on the
+                filesystem.  Therefore there is no point in making the second
+                call if the first one already failed.  */
              if (ret == 0 && S_ISDIR (sb->st_mode))
                {
                  acl = acl_get_file (name, ACL_TYPE_DEFAULT);
@@ -170,6 +180,7 @@ file_has_acl (char const *name, struct stat const *sb)
                  else
                    ret = -1;
                }
+#   endif
            }
          else
            ret = -1;