/*
rename a set of files
*/
-NTSTATUS pvfs_rename(struct smbsrv_request *req, union smb_rename *ren)
+NTSTATUS pvfs_rename(struct ntvfs_module_context *ntvfs,
+ struct smbsrv_request *req, union smb_rename *ren)
{
- struct pvfs_state *pvfs = req->tcon->ntvfs_private;
+ struct pvfs_state *pvfs = ntvfs->private_data;
NTSTATUS status;
struct pvfs_filename *name1, *name2;
return status;
}
+ if (pvfs_is_open(pvfs, name1) ||
+ pvfs_is_open(pvfs, name2)) {
+ return NT_STATUS_SHARING_VIOLATION;
+ }
+
if (name1->has_wildcard || name2->has_wildcard) {
DEBUG(3,("Rejecting wildcard rename '%s' -> '%s'\n",
ren->rename.in.pattern1, ren->rename.in.pattern2));
return NT_STATUS_OBJECT_NAME_COLLISION;
}
- if (rename(name1->full_name, name2->full_name) != 0) {
+ if (rename(name1->full_name, name2->full_name) == -1) {
return pvfs_map_errno(pvfs, errno);
}