diff options
author | Aravind Srinivasan <aravind.srinivasan@isilon.com> | 2009-08-26 14:56:09 -0700 |
---|---|---|
committer | Tim Prouty <tprouty@samba.org> | 2009-08-28 16:38:57 -0700 |
commit | e046b382f24f507a19bfb020b145ea2ec8acafcb (patch) | |
tree | 867511a82c4772ee8f325c48ed1ec3f0b5e5d093 /source3/include | |
parent | 77e2403f1314a28722f0fb21f6682320b2e9935d (diff) | |
download | samba-e046b382f24f507a19bfb020b145ea2ec8acafcb.tar.gz samba-e046b382f24f507a19bfb020b145ea2ec8acafcb.tar.bz2 samba-e046b382f24f507a19bfb020b145ea2ec8acafcb.zip |
s3: Add a new VFS op called SMB_VFS_TRANSLATE_NAME
This vop is designed to work in tandem with SMB_VFS_READDIR to allow
vfs modules to make modifications to arbitrary filenames before
they're consumed by callers. Subsequently the core directory
enumeration code in smbd is now changed to free the memory that may be
allocated in a module. This vop enables the new version of catia in
the following patch.
Signed-off-by: Tim Prouty <tprouty@samba.org>
Diffstat (limited to 'source3/include')
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/include/vfs.h | 7 | ||||
-rw-r--r-- | source3/include/vfs_macros.h | 8 |
3 files changed, 16 insertions, 1 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index ac0eed2b5b..9314e57cc2 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6216,7 +6216,7 @@ bool get_dir_entry(TALLOC_CTX *ctx, bool is_visible_file(connection_struct *conn, const char *dir_path, const char *name, SMB_STRUCT_STAT *pst, bool use_veto); struct smb_Dir *OpenDir(TALLOC_CTX *mem_ctx, connection_struct *conn, const char *name, const char *mask, uint32 attr); -const char *ReadDirName(struct smb_Dir *dirp, long *poffset, +char *ReadDirName(struct smb_Dir *dirp, long *poffset, SMB_STRUCT_STAT *sbuf); void RewindDir(struct smb_Dir *dirp, long *poffset); void SeekDir(struct smb_Dir *dirp, long offset); diff --git a/source3/include/vfs.h b/source3/include/vfs.h index 38a972f04c..38d60a0aec 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -123,6 +123,8 @@ SMB_VFS_RENAME, SMB_VFS_UNLINK, SMB_VFS_NTIMES. */ /* Changed to version 27 - not yet released. Added enum timestamp_set_resolution * return to fs_capabilities call. JRA. */ +/* Leave at 27 - not yet released. Add translate_name VFS call to convert + UNIX names to Windows supported names -- asrinivasan. */ #define SMB_VFS_INTERFACE_VERSION 27 @@ -299,6 +301,9 @@ struct vfs_fn_pointers { struct files_struct *fsp, struct lock_struct *plock); + NTSTATUS (*translate_name)(struct vfs_handle_struct *handle, + char **mapped_name); + /* NT ACL operations. */ NTSTATUS (*fget_nt_acl)(struct vfs_handle_struct *handle, @@ -644,6 +649,8 @@ bool smb_vfs_call_strict_lock(struct vfs_handle_struct *handle, void smb_vfs_call_strict_unlock(struct vfs_handle_struct *handle, struct files_struct *fsp, struct lock_struct *plock); +NTSTATUS smb_vfs_call_translate_name(struct vfs_handle_struct *handle, + char **mapped_name); NTSTATUS smb_vfs_call_fget_nt_acl(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 security_info, diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h index e271cdee61..7cc5579e25 100644 --- a/source3/include/vfs_macros.h +++ b/source3/include/vfs_macros.h @@ -345,6 +345,14 @@ #define SMB_VFS_NEXT_STRICT_UNLOCK(handle, fsp, plock) \ smb_vfs_call_strict_unlock((handle)->next, (fsp), (plock)) +#define SMB_VFS_TRANSLATE_NAME(conn, mapped_name) \ + smb_vfs_call_translate_name((conn)->vfs_handles, (mapped_name)) +#define SMB_VFS_NEXT_TRANSLATE_NAME(handle, mapped_name) \ + smb_vfs_call_translate_name((handle)->next, (mapped_name)) + +#define SMB_VFS_NEXT_STRICT_UNLOCK(handle, fsp, plock) \ + smb_vfs_call_strict_unlock((handle)->next, (fsp), (plock)) + #define SMB_VFS_FGET_NT_ACL(fsp, security_info, ppdesc) \ smb_vfs_call_fget_nt_acl((fsp)->conn->vfs_handles, (fsp), (security_info), (ppdesc)) #define SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, ppdesc) \ |