# HG changeset patch # User Ben Walton # Date 1265981520 18000 # Node ID 05cf771f8b651a7b91ab200403b5b7a11fad57f5 # Parent 8d1732828ada8ef6a2a23ef5c36b31874ec34f2b copy-acl: 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 * lib/copy-acl.c (qcopy_acl): Also ignore EOPNOTSUPP. * lib/set-mode-acl.c (qset_acl): Likewise. Signed-off-by: Ben Walton Signed-off-by: Eric Blake diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-03-02 Ben Walton (tiny change) + + copy-acl: enhance Solaris ACL error handling + * lib/copy-acl.c (qcopy_acl): Also ignore EOPNOTSUPP. + * lib/set-mode-acl.c (qset_acl): Likewise. + 2010-03-02 Bruno Haible spawn: Don't override the system defined values on FreeBSD 8. diff --git a/lib/copy-acl.c b/lib/copy-acl.c --- a/lib/copy-acl.c +++ b/lib/copy-acl.c @@ -294,7 +294,7 @@ if (count < 0) { - if (errno == ENOSYS || errno == ENOTSUP) + if (errno == ENOSYS || errno == ENOTSUP || errno == EOPNOTSUPP) { count = 0; entries = NULL; @@ -358,7 +358,8 @@ 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 --- a/lib/set-mode-acl.c +++ b/lib/set-mode-acl.c @@ -387,7 +387,7 @@ 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; }