* lib/acl.c (copy_acl): Adjust to IRIX 6.5. Problem reported
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 22 Oct 2007 21:03:13 +0000 (14:03 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 22 Oct 2007 21:03:13 +0000 (14:03 -0700)
by Bruno Haible.

ChangeLog
lib/acl.c

index 4801d21..4799054 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lib/acl.c (copy_acl): Adjust to IRIX 6.5.  Problem reported
+       by Bruno Haible.
+
 2007-10-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        * lib/getloadavg.c
index 0872e45..c95a571 100644 (file)
--- a/lib/acl.c
+++ b/lib/acl.c
@@ -84,7 +84,12 @@ copy_acl (const char *src_name, int source_desc, const char *dst_name,
          int n = acl_entries (acl);
 
          acl_free (acl);
-         if (n == 3)
+         /* On most hosts an ACL is trivial if n == 3, and it cannot be
+            less than 3.  On IRIX 6.5 it is also trivial if n == -1.
+            For simplicity and safety, assume the ACL is trivial if n <= 3.
+            Also see file_has_acl.c for some of the other possibilities;
+            it's not clear whether that complexity is needed here.  */
+         if (n <= 3)
            {
              if (chmod_or_fchmod (dst_name, dest_desc, mode) != 0)
                saved_errno = errno;