selftest/Samba4: make use of get_cmd_env_vars() to setup all relevant env variables
[samba.git] / source3 / modules / vfs_posixacl.c
index 44a7efc99339cfce90c6a22b787f8fc6392330f2..feb819de98259dc176651e86cde45a5089e67c27 100644 (file)
@@ -33,38 +33,6 @@ static acl_t smb_acl_to_posix(const struct smb_acl_t *acl);
 
 /* public functions - the api */
 
-SMB_ACL_T posixacl_sys_acl_get_file(vfs_handle_struct *handle,
-                               const struct smb_filename *smb_fname,
-                               SMB_ACL_TYPE_T type,
-                               TALLOC_CTX *mem_ctx)
-{
-       struct smb_acl_t *result;
-       acl_type_t acl_type;
-       acl_t acl;
-
-       switch(type) {
-       case SMB_ACL_TYPE_ACCESS:
-               acl_type = ACL_TYPE_ACCESS;
-               break;
-       case SMB_ACL_TYPE_DEFAULT:
-               acl_type = ACL_TYPE_DEFAULT;
-               break;
-       default:
-               errno = EINVAL;
-               return NULL;
-       }
-
-       acl = acl_get_file(smb_fname->base_name, acl_type);
-
-       if (acl == NULL) {
-               return NULL;
-       }
-
-       result = smb_acl_to_internal(acl, mem_ctx);
-       acl_free(acl);
-       return result;
-}
-
 SMB_ACL_T posixacl_sys_acl_get_fd(vfs_handle_struct *handle,
                                  files_struct *fsp,
                                  SMB_ACL_TYPE_T type,
@@ -90,15 +58,9 @@ SMB_ACL_T posixacl_sys_acl_get_fd(vfs_handle_struct *handle,
                acl = acl_get_fd(fsp_get_io_fd(fsp));
        } else if (fsp->fsp_flags.have_proc_fds) {
                int fd = fsp_get_pathref_fd(fsp);
-               const char *proc_fd_path = NULL;
-               char buf[PATH_MAX];
+               struct sys_proc_fd_path_buf buf;
 
-               proc_fd_path = sys_proc_fd_path(fd, buf, sizeof(buf));
-               if (proc_fd_path == NULL) {
-                       return NULL;
-               }
-
-               acl = acl_get_file(proc_fd_path, acl_type);
+               acl = acl_get_file(sys_proc_fd_path(fd, &buf), acl_type);
        } else {
                /*
                 * This is no longer a handle based call.
@@ -114,42 +76,6 @@ SMB_ACL_T posixacl_sys_acl_get_fd(vfs_handle_struct *handle,
        return result;
 }
 
-int posixacl_sys_acl_set_file(vfs_handle_struct *handle,
-                             const struct smb_filename *smb_fname,
-                             SMB_ACL_TYPE_T type,
-                             SMB_ACL_T theacl)
-{
-       int res;
-       acl_type_t acl_type;
-       acl_t acl;
-
-       DEBUG(10, ("Calling acl_set_file: %s, %d\n",
-                       smb_fname->base_name,
-                       type));
-
-       switch(type) {
-       case SMB_ACL_TYPE_ACCESS:
-               acl_type = ACL_TYPE_ACCESS;
-               break;
-       case SMB_ACL_TYPE_DEFAULT:
-               acl_type = ACL_TYPE_DEFAULT;
-               break;
-       default:
-               errno = EINVAL;
-               return -1;
-       }
-
-       if ((acl = smb_acl_to_posix(theacl)) == NULL) {
-               return -1;
-       }
-       res = acl_set_file(smb_fname->base_name, acl_type, acl);
-       if (res != 0) {
-               DEBUG(10, ("acl_set_file failed: %s\n", strerror(errno)));
-       }
-       acl_free(acl);
-       return res;
-}
-
 int posixacl_sys_acl_set_fd(vfs_handle_struct *handle,
                            files_struct *fsp,
                            SMB_ACL_TYPE_T type,
@@ -180,15 +106,9 @@ int posixacl_sys_acl_set_fd(vfs_handle_struct *handle,
        if (!fsp->fsp_flags.is_pathref && type == SMB_ACL_TYPE_ACCESS) {
                res = acl_set_fd(fd, acl);
        } else if (fsp->fsp_flags.have_proc_fds) {
-               const char *proc_fd_path = NULL;
-               char buf[PATH_MAX];
+               struct sys_proc_fd_path_buf buf;
 
-               proc_fd_path = sys_proc_fd_path(fd, buf, sizeof(buf));
-               if (proc_fd_path == NULL) {
-                       acl_free(acl);
-                       return -1;
-               }
-               res = acl_set_file(proc_fd_path, acl_type, acl);
+               res = acl_set_file(sys_proc_fd_path(fd, &buf), acl_type, acl);
        } else {
                /*
                 * This is no longer a handle based call.
@@ -207,14 +127,9 @@ int posixacl_sys_acl_delete_def_fd(vfs_handle_struct *handle,
 {
        if (fsp->fsp_flags.have_proc_fds) {
                int fd = fsp_get_pathref_fd(fsp);
-               const char *proc_fd_path = NULL;
-               char buf[PATH_MAX];
+               struct sys_proc_fd_path_buf buf;
 
-               proc_fd_path = sys_proc_fd_path(fd, buf, sizeof(buf));
-               if (proc_fd_path == NULL) {
-                       return -1;
-               }
-               return acl_delete_def_file(proc_fd_path);
+               return acl_delete_def_file(sys_proc_fd_path(fd, &buf));
        }
 
        /*
@@ -460,9 +375,7 @@ static acl_t smb_acl_to_posix(const struct smb_acl_t *acl)
 /* VFS operations structure */
 
 static struct vfs_fn_pointers posixacl_fns = {
-       .sys_acl_get_file_fn = posixacl_sys_acl_get_file,
        .sys_acl_get_fd_fn = posixacl_sys_acl_get_fd,
-       .sys_acl_blob_get_file_fn = posix_sys_acl_blob_get_file,
        .sys_acl_blob_get_fd_fn = posix_sys_acl_blob_get_fd,
        .sys_acl_set_fd_fn = posixacl_sys_acl_set_fd,
        .sys_acl_delete_def_fd_fn = posixacl_sys_acl_delete_def_fd,