Solaris has support for ACL's on NFS, but only in certain combinations
of client and server.  When ACL operations are attempted in
unsupported situations, EOPNOTSUPP can be returned instead of ENOSYS.
This patch allows utilities that work with ACL's to handle the
difference properly.

Signed-off-by: Ben Walton <[email protected]>
---
 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 af85a08..bfacf20 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 == EOPNOTSUPP || errno == ENOTSUP)
            {
              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 ddac4df..fdc74f2 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.5.1



Reply via email to