diff options
author | Tim Prouty <tprouty@samba.org> | 2009-06-30 17:04:38 -0700 |
---|---|---|
committer | Tim Prouty <tprouty@samba.org> | 2009-07-06 15:38:29 -0700 |
commit | 5a09ba460cb757823e1deb8b2f2ae762765846c0 (patch) | |
tree | 3c09af9ee0067e30c62826d48e9ca8eef39a16fe /source3/modules/vfs_recycle.c | |
parent | c41e5e1342a06456b4a5b101f46a394d6a4252bb (diff) | |
download | samba-5a09ba460cb757823e1deb8b2f2ae762765846c0.tar.gz samba-5a09ba460cb757823e1deb8b2f2ae762765846c0.tar.bz2 samba-5a09ba460cb757823e1deb8b2f2ae762765846c0.zip |
s3: Plumb smb_filename through SMB_VFS_RENAME
Diffstat (limited to 'source3/modules/vfs_recycle.c')
-rw-r--r-- | source3/modules/vfs_recycle.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/source3/modules/vfs_recycle.c b/source3/modules/vfs_recycle.c index f42fab72f7..3fbe8d7e55 100644 --- a/source3/modules/vfs_recycle.c +++ b/source3/modules/vfs_recycle.c @@ -423,12 +423,15 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name) char *path_name = NULL; char *temp_name = NULL; char *final_name = NULL; + struct smb_filename *smb_fname_file = NULL; + struct smb_filename *smb_fname_final = NULL; const char *base; char *repository = NULL; int i = 1; SMB_OFF_T maxsize, minsize; SMB_OFF_T file_size; /* space_avail; */ bool exist; + NTSTATUS status; int rc = -1; repository = talloc_sub_advanced(NULL, lp_servicename(SNUM(conn)), @@ -571,8 +574,21 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name) } } + status = create_synthetic_smb_fname_split(talloc_tos(), file_name, + NULL, &smb_fname_file); + if (!NT_STATUS_IS_OK(status)) { + rc = SMB_VFS_NEXT_UNLINK(handle, file_name); + goto done; + } + status = create_synthetic_smb_fname_split(talloc_tos(), final_name, + NULL, &smb_fname_final); + if (!NT_STATUS_IS_OK(status)) { + rc = SMB_VFS_NEXT_UNLINK(handle, file_name); + goto done; + } + DEBUG(10, ("recycle: Moving %s to %s\n", file_name, final_name)); - rc = SMB_VFS_NEXT_RENAME(handle, file_name, final_name); + rc = SMB_VFS_NEXT_RENAME(handle, smb_fname_file, smb_fname_final); if (rc != 0) { DEBUG(3, ("recycle: Move error %d (%s), purging file %s (%s)\n", errno, strerror(errno), file_name, final_name)); rc = SMB_VFS_NEXT_UNLINK(handle, file_name); @@ -587,6 +603,8 @@ done: SAFE_FREE(path_name); SAFE_FREE(temp_name); SAFE_FREE(final_name); + TALLOC_FREE(smb_fname_file); + TALLOC_FREE(smb_fname_final); TALLOC_FREE(repository); return rc; } |