Here's an addendum, also for Tru64. It turns out that the acl_from_text
function wants a comma at the end of the argument string.
With FreeBSD, IRIX and Tru64 covered, we can remove the #else for
unknown flavors of ACLs: If a new platform comes up, it will likely be
like FreeBSD.
Jim, ok to commit?
2008-05-23 Bruno Haible <[EMAIL PROTECTED]>
Improve support for ACLs on OSF/1.
* lib/acl.c (qset_acl): For OSF/1, use a string that ends in a comma.
Remove fallback for unknown flavors of ACLs.
From 8559805bad1b3f2e9c5bae6d36aa4438249d396a Mon Sep 17 00:00:00 2001
From: Bruno Haible <[EMAIL PROTECTED]>
Date: Fri, 23 May 2008 13:29:46 +0200
Subject: [PATCH] Improve support for ACLs on OSF/1.
---
ChangeLog | 6 ++++++
lib/acl.c | 8 ++++----
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 5bc446d..05cdf1c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-23 Bruno Haible <[EMAIL PROTECTED]>
+
+ Improve support for ACLs on OSF/1.
+ * lib/acl.c (qset_acl): For OSF/1, use a string that ends in a comma.
+ Remove fallback for unknown flavors of ACLs.
+
2008-05-22 Bruno Haible <[EMAIL PROTECTED]>
Add support for ACLs on OSF/1.
diff --git a/lib/acl.c b/lib/acl.c
index 5469db9..a164f0c 100644
--- a/lib/acl.c
+++ b/lib/acl.c
@@ -83,8 +83,11 @@ qset_acl (char const *name, int desc, mode_t mode)
would need to create a qualifier. I don't know how to do this.
So create it using acl_from_text(). */
-# if (HAVE_ACL_DELETE_FD_NP && HAVE_ACL_DELETE_FILE_NP) || HAVE_ACL_TO_SHORT_TEXT /* FreeBSD, IRIX */
+# if HAVE_ACL_FREE_TEXT /* Tru64 */
+ char acl_text[] = "u::---,g::---,o::---,";
+# else /* FreeBSD, IRIX */
char acl_text[] = "u::---,g::---,o::---";
+# endif
if (mode & S_IRUSR) acl_text[ 3] = 'r';
if (mode & S_IWUSR) acl_text[ 4] = 'w';
@@ -99,9 +102,6 @@ qset_acl (char const *name, int desc, mode_t mode)
acl = acl_from_text (acl_text);
if (!acl)
return -1;
-# else /* Unknown flavor of POSIX-like ACLs */
- return chmod_or_fchmod (name, desc, mode);
-# endif
}
if (HAVE_ACL_SET_FD && desc != -1)
ret = acl_set_fd (desc, acl);
--
1.5.4.1