From: Jeremy Allison Date: Thu, 22 Aug 2019 21:31:29 +0000 (-0700) Subject: s3: VFS: vfs_unityed_media. Implement readlinkat(). X-Git-Tag: tevent-0.10.1~174 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f1c0d43177bb050042e808c6c2acc4e3bdddb78;p=thirdparty%2Fsamba.git s3: VFS: vfs_unityed_media. Implement readlinkat(). Currently identical to readlink(). Signed-off-by: Jeremy Allison Reviewed-by: Ralph Böhme --- diff --git a/source3/modules/vfs_unityed_media.c b/source3/modules/vfs_unityed_media.c index 1816943a29d..c6e636ea575 100644 --- a/source3/modules/vfs_unityed_media.c +++ b/source3/modules/vfs_unityed_media.c @@ -1393,6 +1393,42 @@ err: return status; } +static int um_readlinkat(vfs_handle_struct *handle, + files_struct *dirfsp, + const struct smb_filename *smb_fname, + char *buf, + size_t bufsiz) +{ + int status; + struct smb_filename *client_fname = NULL; + + DEBUG(10, ("Entering um_readlinkat\n")); + + if (!is_in_media_files(smb_fname->base_name)) { + return SMB_VFS_NEXT_READLINKAT(handle, + dirfsp, + smb_fname, + buf, + bufsiz); + } + + status = alloc_get_client_smb_fname(handle, talloc_tos(), + smb_fname, &client_fname); + if (status != 0) { + goto err; + } + + status = SMB_VFS_NEXT_READLINKAT(handle, + dirfsp, + client_fname, + buf, + bufsiz); + +err: + TALLOC_FREE(client_fname); + return status; +} + static int um_linkat(vfs_handle_struct *handle, files_struct *srcfsp, const struct smb_filename *old_smb_fname, @@ -1925,6 +1961,7 @@ static struct vfs_fn_pointers vfs_um_fns = { .ntimes_fn = um_ntimes, .symlink_fn = um_symlink, .readlink_fn = um_readlink, + .readlinkat_fn = um_readlinkat, .linkat_fn = um_linkat, .mknodat_fn = um_mknodat, .realpath_fn = um_realpath,