-/*
+/*
Unix SMB/CIFS implementation.
Samba system utilities for ACL support.
Copyright (C) Jeremy Allison 2000.
Copyright (C) Volker Lendecke 2006
Copyright (C) Michael Adam 2006,2008
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
{
if (entry_d->a_type == SMB_ACL_USER) {
return &entry_d->info.user.uid;
- }
+ }
if (entry_d->a_type == SMB_ACL_GROUP) {
return &entry_d->info.group.gid;
}
errno = EINVAL;
- return NULL;
+ return NULL;
}
int sys_acl_clear_perms(SMB_ACL_PERMSET_T permset_d)
&& perm != SMB_ACL_EXECUTE) {
errno = EINVAL;
return -1;
- }
-
+ }
+
if (permset_d == NULL) {
errno = EINVAL;
return -1;
}
*permset_d |= perm;
-
+
return 0;
}
ap->a_type);
tag = tagbuf;
break;
-
+
case SMB_ACL_USER:
id = uidtoname(ap->info.user.uid);
- /* FALL TROUGH */
+
+ FALL_THROUGH;
case SMB_ACL_USER_OBJ:
tag = "user";
break;
} else {
id = gr->gr_name;
}
- /* FALL TROUGH */
+
+ FALL_THROUGH;
case SMB_ACL_GROUP_OBJ:
tag = "group";
break;
errno = ENOMEM;
return NULL;
}
-
+
a->count = 0;
a->next = -1;
if (entry_d->a_type == SMB_ACL_USER) {
entry_d->info.user.uid = *((uid_t *)qual_p);
return 0;
- }
+ }
if (entry_d->a_type == SMB_ACL_GROUP) {
entry_d->info.group.gid = *((gid_t *)qual_p);
return 0;
}
entry_d->a_perm = *permset_d;
-
+
return 0;
}
* sys_acl_delete_def_file are to be redirected to the default
* statically-bound acl vfs module, but they are replacable.
*/
-
+
#if defined(HAVE_POSIX_ACLS)
-
-SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
- const char *path_p, SMB_ACL_TYPE_T type, TALLOC_CTX *mem_ctx)
+
+SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ TALLOC_CTX *mem_ctx)
{
- return posixacl_sys_acl_get_file(handle, path_p, type, mem_ctx);
+ return posixacl_sys_acl_get_file(handle, smb_fname, type, mem_ctx);
}
-
+
SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, TALLOC_CTX *mem_ctx)
{
return posixacl_sys_acl_get_fd(handle, fsp, mem_ctx);
}
-
+
int sys_acl_set_file(vfs_handle_struct *handle,
- const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ SMB_ACL_T acl_d)
{
- return posixacl_sys_acl_set_file(handle, name, type, acl_d);
+ return posixacl_sys_acl_set_file(handle, smb_fname, type, acl_d);
}
-
+
int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
SMB_ACL_T acl_d)
{
}
int sys_acl_delete_def_file(vfs_handle_struct *handle,
- const char *path)
+ const struct smb_filename *smb_fname)
{
- return posixacl_sys_acl_delete_def_file(handle, path);
+ return posixacl_sys_acl_delete_def_file(handle, smb_fname);
}
#elif defined(HAVE_AIX_ACLS)
SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
- const char *path_p, SMB_ACL_TYPE_T type,
- TALLOC_CTX *mem_ctx)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ TALLOC_CTX *mem_ctx)
{
- return aixacl_sys_acl_get_file(handle, path_p, type, mem_ctx);
+ return aixacl_sys_acl_get_file(handle, smb_fname, type, mem_ctx);
}
SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp,
}
int sys_acl_set_file(vfs_handle_struct *handle,
- const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ SMB_ACL_T acl_d)
{
- return aixacl_sys_acl_set_file(handle, name, type, acl_d);
+ return aixacl_sys_acl_set_file(handle, smb_fname, type, acl_d);
}
int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
}
int sys_acl_delete_def_file(vfs_handle_struct *handle,
- const char *path)
+ const struct smb_filename *smb_fname)
{
- return aixacl_sys_acl_delete_def_file(handle, path);
+ return aixacl_sys_acl_delete_def_file(handle, smb_fname);
}
#elif defined(HAVE_TRU64_ACLS)
-
+
SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
- const char *path_p, SMB_ACL_TYPE_T type,
- TALLOC_CTX *mem_ctx)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ TALLOC_CTX *mem_ctx)
{
- return tru64acl_sys_acl_get_file(handle, path_p, type,
+ return tru64acl_sys_acl_get_file(handle, smb_fname, type,
mem_ctx);
}
}
int sys_acl_set_file(vfs_handle_struct *handle,
- const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ SMB_ACL_T acl_d)
{
- return tru64acl_sys_acl_set_file(handle, name, type, acl_d);
+ return tru64acl_sys_acl_set_file(handle, smb_fname, type, acl_d);
}
int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
}
int sys_acl_delete_def_file(vfs_handle_struct *handle,
- const char *path)
+ const struct smb_filename *smb_fname)
{
- return tru64acl_sys_acl_delete_def_file(handle, path);
+ return tru64acl_sys_acl_delete_def_file(handle, smb_fname);
}
#elif defined(HAVE_SOLARIS_UNIXWARE_ACLS)
SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
- const char *path_p, SMB_ACL_TYPE_T type,
- TALLOC_CTX *mem_ctx)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ TALLOC_CTX *mem_ctx)
{
- return solarisacl_sys_acl_get_file(handle, path_p, type,
+ return solarisacl_sys_acl_get_file(handle, smb_fname, type,
mem_ctx);
}
}
int sys_acl_set_file(vfs_handle_struct *handle,
- const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ SMB_ACL_T acl_d)
{
- return solarisacl_sys_acl_set_file(handle, name, type, acl_d);
+ return solarisacl_sys_acl_set_file(handle, smb_fname, type, acl_d);
}
int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
}
int sys_acl_delete_def_file(vfs_handle_struct *handle,
- const char *path)
+ const struct smb_filename *smb_fname)
{
- return solarisacl_sys_acl_delete_def_file(handle, path);
+ return solarisacl_sys_acl_delete_def_file(handle, smb_fname);
}
#elif defined(HAVE_HPUX_ACLS)
SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
- const char *path_p, SMB_ACL_TYPE_T type,
- TALLOC_CTX *mem_ctx)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ TALLOC_CTX *mem_ctx)
{
- return hpuxacl_sys_acl_get_file(handle, path_p, type, mem_ctx);
+ return hpuxacl_sys_acl_get_file(handle, smb_fname, type, mem_ctx);
}
SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp,
}
int sys_acl_set_file(vfs_handle_struct *handle,
- const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ SMB_ACL_T acl_d)
{
- return hpuxacl_sys_acl_set_file(handle, name, type, acl_d);
+ return hpuxacl_sys_acl_set_file(handle, smb_fname, type, acl_d);
}
int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp,
}
int sys_acl_delete_def_file(vfs_handle_struct *handle,
- const char *path)
+ const struct smb_filename *smb_fname)
{
- return hpuxacl_sys_acl_delete_def_file(handle, path);
+ return hpuxacl_sys_acl_delete_def_file(handle, smb_fname);
}
#else /* No ACLs. */
SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle,
- const char *path_p, SMB_ACL_TYPE_T type,
- TALLOC_CTX *mem_ctx)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ TALLOC_CTX *mem_ctx)
{
#ifdef ENOTSUP
errno = ENOTSUP;
}
int sys_acl_set_file(vfs_handle_struct *handle,
- const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d)
+ const struct smb_filename *smb_fname,
+ SMB_ACL_TYPE_T type,
+ SMB_ACL_T acl_d)
{
#ifdef ENOTSUP
errno = ENOTSUP;
}
int sys_acl_delete_def_file(vfs_handle_struct *handle,
- const char *path)
+ const struct smb_filename *smb_fname)
{
#ifdef ENOTSUP
errno = ENOTSUP;