vfs_catia: add catia_readdir_attr
authorRalph Boehme <slow@samba.org>
Thu, 8 Dec 2016 14:44:56 +0000 (15:44 +0100)
committerUri Simchoni <uri@samba.org>
Wed, 1 Mar 2017 23:32:20 +0000 (00:32 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12427

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>
source3/modules/vfs_catia.c

index eb2e49e99aaf3a9defd24898944c5df04ba3a290..dd8f2dd21e104ab5955ba1fb318381d49966c23c 100644 (file)
@@ -2253,11 +2253,39 @@ static NTSTATUS catia_set_compression(vfs_handle_struct *handle,
        return result;
 }
 
+static NTSTATUS catia_readdir_attr(struct vfs_handle_struct *handle,
+                                  const struct smb_filename *smb_fname_in,
+                                  TALLOC_CTX *mem_ctx,
+                                  struct readdir_attr_data **pattr_data)
+{
+       struct smb_filename *smb_fname;
+       char *fname = NULL;
+       NTSTATUS status;
+
+       status = catia_string_replace_allocate(handle->conn,
+                                              smb_fname_in->base_name,
+                                              &fname,
+                                              vfs_translate_to_unix);
+       if (!NT_STATUS_IS_OK(status)) {
+               errno = map_errno_from_nt_status(status);
+               return status;
+       }
+
+       smb_fname = synthetic_smb_fname(talloc_tos(), fname, NULL,
+                                       &smb_fname_in->st, 0);
+
+       status = SMB_VFS_NEXT_READDIR_ATTR(handle, smb_fname, mem_ctx, pattr_data);
+
+       TALLOC_FREE(smb_fname);
+       return status;
+}
+
 static struct vfs_fn_pointers vfs_catia_fns = {
        /* Directory operations */
        .mkdir_fn = catia_mkdir,
        .rmdir_fn = catia_rmdir,
        .opendir_fn = catia_opendir,
+       .readdir_attr_fn = catia_readdir_attr,
 
        /* File operations */
        .open_fn = catia_open,