static DIR *mh_opendir(vfs_handle_struct *handle,
const char *fname,
const char *mask,
- uint32 attr)
+ uint32_t attr)
{
struct mh_dirinfo_struct *dirInfo;
static DIR *mh_fdopendir(vfs_handle_struct *handle,
files_struct *fsp,
const char *mask,
- uint32 attr)
+ uint32_t attr)
{
struct mh_dirinfo_struct *dirInfo = NULL;
DIR *dirstream;
* Failure: set errno, return -1
*/
static int mh_mkdir(vfs_handle_struct *handle,
- const char *path,
+ const struct smb_filename *smb_fname,
mode_t mode)
{
int status;
- char *clientPath;
- TALLOC_CTX *ctx;
-
+ struct smb_filename *clientFname = NULL;
+ const char *path = smb_fname->base_name;
DEBUG(MH_INFO_DEBUG, ("Entering with path '%s'\n", path));
if (!is_in_media_files(path))
{
- status = SMB_VFS_NEXT_MKDIR(handle, path, mode);
+ status = SMB_VFS_NEXT_MKDIR(handle, smb_fname, mode);
goto out;
}
- clientPath = NULL;
- ctx = talloc_tos();
-
- if ((status = alloc_get_client_path(handle, ctx,
- path,
- &clientPath)))
- {
+ status = alloc_get_client_smb_fname(handle,
+ talloc_tos(),
+ smb_fname,
+ &clientFname);
+ if (status != 0) {
goto err;
}
- status = SMB_VFS_NEXT_MKDIR(handle, clientPath, mode);
+ status = SMB_VFS_NEXT_MKDIR(handle, clientFname, mode);
err:
- TALLOC_FREE(clientPath);
+ TALLOC_FREE(clientFname);
out:
DEBUG(MH_INFO_DEBUG, ("Leaving with path '%s'\n", path));
return status;
* In this case, "name" is a path.
*/
static NTSTATUS mh_get_nt_acl(vfs_handle_struct *handle,
- const char *name,
- uint32 security_info,
+ const struct smb_filename *smb_fname,
+ uint32_t security_info,
TALLOC_CTX *mem_ctx,
struct security_descriptor **ppdesc)
{
NTSTATUS status;
char *clientPath;
+ struct smb_filename *client_smb_fname = NULL;
TALLOC_CTX *ctx;
DEBUG(MH_INFO_DEBUG, ("Entering mh_get_nt_acl\n"));
- if (!is_in_media_files(name))
+ if (!is_in_media_files(smb_fname->base_name))
{
- status = SMB_VFS_NEXT_GET_NT_ACL(handle, name,
+ status = SMB_VFS_NEXT_GET_NT_ACL(handle, smb_fname,
security_info,
mem_ctx, ppdesc);
goto out;
ctx = talloc_tos();
if (alloc_get_client_path(handle, ctx,
- name,
+ smb_fname->base_name,
&clientPath))
{
status = map_nt_error_from_unix(errno);
goto err;
}
- status = SMB_VFS_NEXT_GET_NT_ACL(handle, clientPath,
+ client_smb_fname = synthetic_smb_fname(talloc_tos(),
+ clientPath,
+ NULL,
+ NULL);
+ if (client_smb_fname == NULL) {
+ TALLOC_FREE(clientPath);
+ return NT_STATUS_NO_MEMORY;
+ }
+
+ status = SMB_VFS_NEXT_GET_NT_ACL(handle, client_smb_fname,
security_info,
mem_ctx, ppdesc);
err:
TALLOC_FREE(clientPath);
+ TALLOC_FREE(client_smb_fname);
out:
return status;
}