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 <bwalton@artsci.utoronto.ca>
Signed-off-by: Eric Blake <eblake@redhat.com>
+2010-03-02 Ben Walton <bwalton@artsci.utoronto.ca> (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 <bruno@clisp.org>
spawn: Don't override the system defined values on FreeBSD 8.
if (count < 0)
{
- if (errno == ENOSYS || errno == ENOTSUP)
+ if (errno == ENOSYS || errno == ENOTSUP || errno == EOPNOTSUPP)
{
count = 0;
entries = NULL;
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
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;
}