From d91edbc90ad960e4e9c285d22812faba70f662a9 Mon Sep 17 00:00:00 2001 From: James Peterson Date: Wed, 4 Dec 2002 14:26:43 +0000 Subject: [PATCH] STABLE12-windows-rename-warning-20021126 Currently AFS doesn't handle Explorer operations 'rename' and 'move' correctly. Normal operation of 'rename' and 'move' is to warn the operator when the destination file name already exist. (cherry picked from commit f5ff298ec5dcc3607621321e5785374bbed591fc) --- src/WINNT/afsd/smb.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index b2a95af72..21aac83ff 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -3831,6 +3831,7 @@ long smb_ReceiveCoreRename(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp) smb_renameRock_t rock; cm_scache_t *oldDscp; cm_scache_t *newDscp; + cm_scache_t *tmpscp; char *oldLastNamep; char *newLastNamep; osi_hyper_t thyper; @@ -3914,6 +3915,14 @@ long smb_ReceiveCoreRename(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp) */ thyper.LowPart = 0; /* search dir from here */ thyper.HighPart = 0; + /* search for file to already exhist, if so return error*/ + + code = cm_Lookup(newDscp,newLastNamep,CM_FLAG_CHECKPATH,userp,&req,&tmpscp); + if((code != CM_ERROR_NOSUCHFILE) && (code != CM_ERROR_NOSUCHPATH) && (code != CM_ERROR_NOSUCHVOLUME) ) { + cm_ReleaseSCache(tmpscp); + return CM_ERROR_EXISTS; /* file exist, do not rename, also + fixes move*/ + } code = cm_ApplyDir(oldDscp, smb_RenameProc, &rock, &thyper, userp, &req, NULL); if (code == CM_ERROR_STOPNOW) -- 2.39.5