return -1;
}
-
-static int crossrename_rename(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname_src,
- const struct smb_filename *smb_fname_dst)
-{
- int result = -1;
-
- START_PROFILE(syscall_rename);
-
- if (smb_fname_src->stream_name || smb_fname_dst->stream_name) {
- errno = ENOENT;
- goto out;
- }
-
- result = rename(smb_fname_src->base_name, smb_fname_dst->base_name);
- if ((result == -1) && (errno == EXDEV)) {
- /* Rename across filesystems needed. */
- result = copy_reg(smb_fname_src->base_name,
- smb_fname_dst->base_name);
- }
-
- out:
- END_PROFILE(syscall_rename);
- return result;
-}
-
static int crossrename_renameat(vfs_handle_struct *handle,
files_struct *srcfsp,
const struct smb_filename *smb_fname_src,
static struct vfs_fn_pointers vfs_crossrename_fns = {
.connect_fn = crossrename_connect,
- .rename_fn = crossrename_rename,
.renameat_fn = crossrename_renameat
};