1
0
Fork 0
mirror of synced 2025-03-07 03:53:26 +01:00

shell32: Create nonexistent destination directories in FO_MOVE.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=25207
This commit is contained in:
Zhenbo Li 2024-03-17 14:04:32 -05:00 committed by Alexandre Julliard
parent 19627b13e4
commit b4a5775ffb
2 changed files with 6 additions and 4 deletions

View file

@ -1398,6 +1398,7 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
INT mismatched = 0;
const FILE_ENTRY *entryToMove;
const FILE_ENTRY *fileDest;
int ret;
if (!flFrom->dwNumFiles)
return ERROR_SUCCESS;
@ -1418,8 +1419,9 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const
return ERROR_CANCELLED;
}
if (!PathFileExistsW(flTo->feFiles[0].szDirectory))
return ERROR_CANCELLED;
ret = SHCreateDirectoryExW(NULL, flTo->feFiles[0].szDirectory, NULL);
if (ret && ret != ERROR_ALREADY_EXISTS)
return ret;
if (lpFileOp->fFlags & FOF_MULTIDESTFILES)
mismatched = flFrom->dwNumFiles - flTo->dwNumFiles;

View file

@ -2165,8 +2165,8 @@ static void test_move(void)
shfo.pFrom = "test2.txt\0";
shfo.pTo = "dir1\\dir2\\test2.txt\0";
retval = SHFileOperationA(&shfo);
todo_wine ok(!retval, "got %ld\n", retval);
todo_wine ok(DeleteFileA("dir1\\dir2\\test2.txt"), "Expected dir1\\dir2\\test2.txt to exist\n");
ok(!retval, "got %ld\n", retval);
ok(DeleteFileA("dir1\\dir2\\test2.txt"), "Expected dir1\\dir2\\test2.txt to exist\n");
RemoveDirectoryA("dir1\\dir2");
RemoveDirectoryA("dir1");
createTestFile("test2.txt");