mirror of
https://github.com/samba-team/samba.git
synced 2025-01-25 06:04:04 +03:00
r3693: Correctly detect errno for no acl/ea support.
Jeremy (This used to be commit 089a76f611187e2ba4c3363b657905d04576109e)
This commit is contained in:
parent
5cb9d92861
commit
ecd1b0fffd
@ -3196,3 +3196,23 @@ int sys_acl_free_qualifier(void *qual, SMB_ACL_TAG_T tagtype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* No ACLs. */
|
#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;
|
||||||
|
}
|
||||||
|
@ -245,7 +245,7 @@ static void store_inheritance_attributes(files_struct *fsp, canon_ace *file_ace_
|
|||||||
SAFE_FREE(pai_buf);
|
SAFE_FREE(pai_buf);
|
||||||
|
|
||||||
DEBUG(10,("store_inheritance_attribute:%s for file %s\n", protected ? " (protected)" : "", fsp->fsp_name));
|
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) ));
|
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 (the_acl == NULL) {
|
||||||
|
|
||||||
if (errno != ENOSYS) {
|
if (!no_acl_syscall_error(errno)) {
|
||||||
/*
|
/*
|
||||||
* Only print this error message if we have some kind of ACL
|
* Only print this error message if we have some kind of ACL
|
||||||
* support that's not working. Otherwise we would always get this.
|
* 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
|
* 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.
|
* 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;
|
*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",
|
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",
|
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
|
* 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.
|
* 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;
|
*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",
|
DEBUG(2,("set_canon_ace_list: sys_acl_set_file failed for file %s (%s).\n",
|
||||||
fsp->fsp_name, strerror(errno) ));
|
fsp->fsp_name, strerror(errno) ));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user