Mariusz Pluciński : shell32: Add support of KF_REDIRECT_DEL_SOURCE_CONTENTS flag to redirection.
Alexandre Julliard
julliard at winehq.org
Tue Jul 5 12:59:04 CDT 2011
Module: wine
Branch: master
Commit: 9435f3ce1574bd11f279d5be384eb7760e40eba5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9435f3ce1574bd11f279d5be384eb7760e40eba5
Author: Mariusz Pluciński <vshader at gmail.com>
Date: Tue Jul 5 11:07:30 2011 +0200
shell32: Add support of KF_REDIRECT_DEL_SOURCE_CONTENTS flag to redirection.
---
dlls/shell32/shellpath.c | 20 +++++++++++++++++++-
dlls/shell32/tests/shellpath.c | 1 -
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index b5209a6..58e2006 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -3232,12 +3232,30 @@ static HRESULT redirect_known_folder(
lstrcpyW(dstPath, pszTargetPath);
ZeroMemory(&fileOp, sizeof(fileOp));
- fileOp.wFunc = FO_COPY;
+
+ if(flags & KF_REDIRECT_DEL_SOURCE_CONTENTS)
+ fileOp.wFunc = FO_MOVE;
+ else
+ fileOp.wFunc = FO_COPY;
+
fileOp.pFrom = srcPath;
fileOp.pTo = dstPath;
fileOp.fFlags = FOF_NO_UI;
hr = (SHFileOperationW(&fileOp)==0 ? S_OK : E_FAIL);
+
+ if(flags & KF_REDIRECT_DEL_SOURCE_CONTENTS)
+ {
+ ZeroMemory(srcPath, sizeof(srcPath));
+ lstrcpyW(srcPath, lpSrcPath);
+
+ ZeroMemory(&fileOp, sizeof(fileOp));
+ fileOp.wFunc = FO_DELETE;
+ fileOp.pFrom = srcPath;
+ fileOp.fFlags = FOF_NO_UI;
+
+ hr = (SHFileOperationW(&fileOp)==0 ? S_OK : E_FAIL);
+ }
}
CoTaskMemFree(lpSrcPath);
diff --git a/dlls/shell32/tests/shellpath.c b/dlls/shell32/tests/shellpath.c
index 0be43f4..3a3c597 100644
--- a/dlls/shell32/tests/shellpath.c
+++ b/dlls/shell32/tests/shellpath.c
@@ -1397,7 +1397,6 @@ static void test_knownFolders(void)
/* check if original directory was really removed */
dwAttributes = GetFileAttributesW(sExamplePath);
- todo_wine
ok(dwAttributes==INVALID_FILE_ATTRIBUTES, "directory should not exist, but has attributes: 0x%08x\n", dwAttributes );
More information about the wine-cvs
mailing list