From: Jeremy Allison Date: Thu, 12 Sep 2019 21:14:01 +0000 (-0700) Subject: s3: VFS: vfs_unityed_media. Implement unlinkat(). X-Git-Tag: talloc-2.3.1~625 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70f5cbc54d7c99ea3709b77487d62ea565a99490;p=thirdparty%2Fsamba.git s3: VFS: vfs_unityed_media. Implement unlinkat(). This is identical to unlink(), as there are no special cases needed for rmdir(). Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- diff --git a/source3/modules/vfs_unityed_media.c b/source3/modules/vfs_unityed_media.c index 6f4ec54143e..a28e59ba9da 100644 --- a/source3/modules/vfs_unityed_media.c +++ b/source3/modules/vfs_unityed_media.c @@ -1196,6 +1196,40 @@ err: return status; } +static int um_unlinkat(vfs_handle_struct *handle, + struct files_struct *dirfsp, + const struct smb_filename *smb_fname, + int flags) +{ + int ret; + struct smb_filename *client_fname = NULL; + + DEBUG(10, ("Entering um_unlinkat\n")); + + if (!is_in_media_files(smb_fname->base_name)) { + return SMB_VFS_NEXT_UNLINKAT(handle, + dirfsp, + smb_fname, + flags); + } + + ret = alloc_get_client_smb_fname(handle, talloc_tos(), + smb_fname, + &client_fname); + if (ret != 0) { + goto err; + } + + ret = SMB_VFS_NEXT_UNLINKAT(handle, + dirfsp, + client_fname, + flags); + +err: + TALLOC_FREE(client_fname); + return ret; +} + static int um_chmod(vfs_handle_struct *handle, const struct smb_filename *smb_fname, mode_t mode) @@ -1936,6 +1970,7 @@ static struct vfs_fn_pointers vfs_um_fns = { .lstat_fn = um_lstat, .fstat_fn = um_fstat, .unlink_fn = um_unlink, + .unlinkat_fn = um_unlinkat, .chmod_fn = um_chmod, .chown_fn = um_chown, .lchown_fn = um_lchown,