Added (partial) support for FO_COPY and FO_DELETE.
This commit is contained in:
parent
8f73cd14ce
commit
f063d0432f
|
@ -4,6 +4,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "debugtools.h"
|
#include "debugtools.h"
|
||||||
#include "shellapi.h"
|
#include "shellapi.h"
|
||||||
|
#include "shlwapi.h"
|
||||||
|
|
||||||
#include "shlobj.h"
|
#include "shlobj.h"
|
||||||
#include "shresdef.h"
|
#include "shresdef.h"
|
||||||
|
@ -154,7 +155,52 @@ BOOL WINAPI Win32DeleteFile(LPSTR fName)
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp)
|
DWORD WINAPI SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp)
|
||||||
{
|
{
|
||||||
FIXME("(%p):stub.\n", lpFileOp);
|
LPSTR pFrom = (LPSTR)lpFileOp->pFrom;
|
||||||
|
LPSTR pTo = (LPSTR)lpFileOp->pTo;
|
||||||
|
LPSTR pTempTo;
|
||||||
|
|
||||||
|
switch(lpFileOp->wFunc) {
|
||||||
|
case FO_COPY:
|
||||||
|
TRACE("File Copy:\n");
|
||||||
|
while(1) {
|
||||||
|
if(!pFrom[0]) break;
|
||||||
|
if(!pTo[0]) break;
|
||||||
|
TRACE(" From='%s' To='%s'\n", pFrom, pTo);
|
||||||
|
|
||||||
|
pTempTo = HeapAlloc(GetProcessHeap(), 0, strlen(pTo)+1);
|
||||||
|
if (pTempTo)
|
||||||
|
{
|
||||||
|
strcpy( pTempTo, pTo );
|
||||||
|
PathRemoveFileSpecA(pTempTo);
|
||||||
|
TRACE(" Creating Directory '%s'\n", pTempTo);
|
||||||
|
SHCreateDirectory(NULL,pTempTo);
|
||||||
|
HeapFree(GetProcessHeap(), 0, pTempTo);
|
||||||
|
}
|
||||||
|
CopyFileA(pFrom, pTo, FALSE);
|
||||||
|
|
||||||
|
pFrom += strlen(pFrom) + 1;
|
||||||
|
pTo += strlen(pTo) + 1;
|
||||||
|
}
|
||||||
|
TRACE("Setting AnyOpsAborted=FALSE\n");
|
||||||
|
lpFileOp->fAnyOperationsAborted=FALSE;
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case FO_DELETE:
|
||||||
|
TRACE("File Delete:\n");
|
||||||
|
while(1) {
|
||||||
|
if(!pFrom[0]) break;
|
||||||
|
TRACE(" File='%s'\n", pFrom);
|
||||||
|
DeleteFileA(pFrom);
|
||||||
|
pFrom += strlen(pFrom) + 1;
|
||||||
|
}
|
||||||
|
TRACE("Setting AnyOpsAborted=FALSE\n");
|
||||||
|
lpFileOp->fAnyOperationsAborted=FALSE;
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
FIXME("Unhandled shell file operation %d\n", lpFileOp->wFunc);
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue