From: Bruno Haible <bruno@clisp.org>
Date: Sun, 8 Jun 2008 03:08:56 +0000 (+0200)
Subject: Don't test the ACL_TYPE_DEFAULT ACL on OSF/1.
X-Git-Tag: v0.1~7297
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=2217763ff0775fa8093a26acfc1b51b726bb358a;p=gnulib.git

Don't test the ACL_TYPE_DEFAULT ACL on OSF/1.
---

diff --git a/ChangeLog b/ChangeLog
index e9e48fa5db..9d4305e19e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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.
diff --git a/lib/file-has-acl.c b/lib/file-has-acl.c
index f3d8bfdac2..53920a1e0b 100644
--- a/lib/file-has-acl.c
+++ b/lib/file-has-acl.c
@@ -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;