1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r3693: Correctly detect errno for no acl/ea support.

Jeremy
(This used to be commit 089a76f611)
This commit is contained in:
Jeremy Allison 2004-11-12 02:16:00 +00:00 committed by Gerald (Jerry) Carter
parent 5cb9d92861
commit ecd1b0fffd
2 changed files with 26 additions and 14 deletions

View File

@ -3196,3 +3196,23 @@ int sys_acl_free_qualifier(void *qual, SMB_ACL_TAG_T tagtype)
}
#endif /* No ACLs. */
/************************************************************************
Deliberately outside the ACL defines. Return 1 if this is a "no acls"
errno, 0 if not.
************************************************************************/
int no_acl_syscall_error(int err)
{
#if defined(ENOSYS)
if (err == ENOSYS) {
return 1;
}
#endif
#if defined(ENOTSUP)
if (err == ENOTSUP) {
return 1;
}
#endif
return 0;
}

View File

@ -245,7 +245,7 @@ static void store_inheritance_attributes(files_struct *fsp, canon_ace *file_ace_
SAFE_FREE(pai_buf);
DEBUG(10,("store_inheritance_attribute:%s for file %s\n", protected ? " (protected)" : "", fsp->fsp_name));
if (ret == -1 && errno != ENOSYS)
if (ret == -1 && !no_acl_syscall_error(errno))
DEBUG(1,("store_inheritance_attribute: Error %s\n", strerror(errno) ));
}
@ -2243,7 +2243,7 @@ static BOOL set_canon_ace_list(files_struct *fsp, canon_ace *the_ace, BOOL defau
if (the_acl == NULL) {
if (errno != ENOSYS) {
if (!no_acl_syscall_error(errno)) {
/*
* Only print this error message if we have some kind of ACL
* support that's not working. Otherwise we would always get this.
@ -2408,13 +2408,9 @@ static BOOL set_canon_ace_list(files_struct *fsp, canon_ace *the_ace, BOOL defau
* Some systems allow all the above calls and only fail with no ACL support
* when attempting to apply the acl. HPUX with HFS is an example of this. JRA.
*/
if (errno == ENOSYS)
if (no_acl_syscall_error(errno)) {
*pacl_set_support = False;
#ifdef ENOTSUP
if (errno == ENOTSUP)
*pacl_set_support = False;
#endif
}
DEBUG(2,("set_canon_ace_list: sys_acl_set_file type %s failed for file %s (%s).\n",
the_acl_type == SMB_ACL_TYPE_DEFAULT ? "directory default" : "file",
@ -2427,13 +2423,9 @@ static BOOL set_canon_ace_list(files_struct *fsp, canon_ace *the_ace, BOOL defau
* Some systems allow all the above calls and only fail with no ACL support
* when attempting to apply the acl. HPUX with HFS is an example of this. JRA.
*/
if (errno == ENOSYS)
if (no_acl_syscall_error(errno)) {
*pacl_set_support = False;
#ifdef ENOTSUP
if (errno == ENOTSUP)
*pacl_set_support = False;
#endif
}
DEBUG(2,("set_canon_ace_list: sys_acl_set_file failed for file %s (%s).\n",
fsp->fsp_name, strerror(errno) ));