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