[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Solaris ACL handling
From: |
Ben Walton |
Subject: |
[PATCH] Solaris ACL handling |
Date: |
Fri, 12 Feb 2010 08:32:00 -0500 |
User-agent: |
Sup/git |
Hi All,
I'm building coreutils for OpenCSW (http://opencsw.org) and was seeing
the test suite fail several tests with 'Operation not supported on
tranport endpoint' messages. After digging around a bit, I found that
errno was EOPNOTSUPP in several ACL handling routines and that wasn't
covered.
This patch resolved those test failures for me. Please let me know if
there is more information required or if my submission isn't up to
snuff for any reason.
Thanks
-Ben
>From a06d449a84a393d2d764a0d7871840cb99f665d7 Mon Sep 17 00:00:00 2001
From: Ben Walton <address@hidden>
Date: Thu, 11 Feb 2010 04:43:29 +0100
Subject: [PATCH] Enhance Solaris ACL error handling
Gracefully handle EOPNOTSUPP in qcopy_acl and qset_acl. These
functions, as used in coreutils, were causing the test suite to fail
on Solaris 8 i386 with ZFS-backed NFSv3 mounts. The failures included
errors such as:
FAIL: cp/backup-dir
cp: preserving permissions for `y/x': Operation not supported on
transport endpoint
Signed-off-by: Ben Walton <address@hidden>
---
lib/copy-acl.c | 4 ++--
lib/set-mode-acl.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/copy-acl.c b/lib/copy-acl.c
index 1e82240..e187cda 100644
--- a/lib/copy-acl.c
+++ b/lib/copy-acl.c
@@ -294,7 +294,7 @@ qcopy_acl (const char *src_name, int source_desc, const
char *dst_name,
if (count < 0)
{
- if (errno == ENOSYS || errno == ENOTSUP)
+ if (errno == ENOSYS || errno == ENOTSUP || errno == EOPNOTSUPP)
{
count = 0;
entries = NULL;
@@ -358,7 +358,7 @@ qcopy_acl (const char *src_name, int source_desc, const
char *dst_name,
if (ret < 0 && saved_errno == 0)
{
saved_errno = errno;
- if (errno == ENOSYS && !acl_nontrivial (count, entries))
+ if ((errno == ENOSYS || errno == EOPNOTSUPP) && !acl_nontrivial
(count, entries))
saved_errno = 0;
}
else
diff --git a/lib/set-mode-acl.c b/lib/set-mode-acl.c
index c5b4726..2cd2c75 100644
--- a/lib/set-mode-acl.c
+++ b/lib/set-mode-acl.c
@@ -387,7 +387,7 @@ qset_acl (char const *name, int desc, mode_t mode)
ret = acl (name, SETACL, sizeof (entries) / sizeof (aclent_t), entries);
if (ret < 0)
{
- if (errno == ENOSYS)
+ if (errno == ENOSYS || errno == EOPNOTSUPP)
return chmod_or_fchmod (name, desc, mode);
return -1;
}
--
1.6.6
--
Ben Walton
Systems Programmer - CHASS
University of Toronto
C:416.407.5610 | W:416.978.4302
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] Solaris ACL handling,
Ben Walton <=