* 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 4801d215c61e7090aff49865cb5fab3bfddab6ab..479905462dd6af02acaef6f2497b93fdb6bb0a62 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 0872e45915a607da862894a06adece40e6aa78b1..c95a57115f354f8497fd5cdcaed77791777096ad 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;