[PATCH v4 0/7] MR391: scrrun: Implement MoveFolder().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52128 Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> -- v4: scrrun: Support wildcards in MoveFolder(). scrrun: Move source dir into destination dir if destination ends with separator in MoveFolder(). scrrun: Check that source is directory in MoveFolder. scrrun: Check for non-existant source in MoveFolder. scrrun: Test MoveFolder with already existing destination. scrrun: Check for null and empty arguments in MoveFolder. scrrun: Implement MoveFolder(). https://gitlab.winehq.org/wine/wine/-/merge_requests/391
From: Robert Wilhelm <robert.wilhelm(a)gmx.net> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52128 Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> --- dlls/scrrun/filesystem.c | 7 +++---- dlls/scrrun/tests/filesystem.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 35b43e2f124..dac3b9fdcf7 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3764,12 +3764,11 @@ static HRESULT WINAPI filesys_MoveFile(IFileSystem3 *iface, BSTR source, BSTR de return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); } -static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface,BSTR Source, - BSTR Destination) +static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface, BSTR source, BSTR destination) { - FIXME("%p %s %s\n", iface, debugstr_w(Source), debugstr_w(Destination)); + TRACE("%p %s %s\n", iface, debugstr_w(source), debugstr_w(destination)); - return E_NOTIMPL; + return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); } static inline HRESULT copy_file(const WCHAR *source, DWORD source_len, diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 1ba0e81a2d1..7654b07b003 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2600,6 +2600,25 @@ static void test_MoveFile(void) SysFreeString(str); } +static void test_MoveFolder(void) +{ + BSTR src, dst; + WCHAR buffW1[MAX_PATH],buffW2[MAX_PATH]; + HRESULT hr; + + get_temp_path(L"foo", buffW1); + get_temp_path(L"bar", buffW2); + + ok(CreateDirectoryW(buffW1, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW1)); + src = SysAllocString(buffW1); + dst = SysAllocString(buffW2); + hr = IFileSystem3_MoveFolder(fs3, src, dst); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + SysFreeString(src); + SysFreeString(dst); + ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); +} + static void test_DoOpenPipeStream(void) { static const char testdata[] = "test"; @@ -2733,6 +2752,7 @@ START_TEST(filesystem) test_GetExtensionName(); test_GetSpecialFolder(); test_MoveFile(); + test_MoveFolder(); test_DoOpenPipeStream(); IFileSystem3_Release(fs3); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/391
From: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> --- dlls/scrrun/filesystem.c | 3 +++ dlls/scrrun/tests/filesystem.c | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index dac3b9fdcf7..52e10239e05 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3768,6 +3768,9 @@ static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface, BSTR source, BSTR { TRACE("%p %s %s\n", iface, debugstr_w(source), debugstr_w(destination)); + if(!source || !source[0] || !destination || !destination[0]) + return E_INVALIDARG; + return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); } diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 7654b07b003..48560a90a63 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2602,7 +2602,7 @@ static void test_MoveFile(void) static void test_MoveFolder(void) { - BSTR src, dst; + BSTR src, dst, str, empty; WCHAR buffW1[MAX_PATH],buffW2[MAX_PATH]; HRESULT hr; @@ -2617,6 +2617,19 @@ static void test_MoveFolder(void) SysFreeString(src); SysFreeString(dst); ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); + + str = SysAllocString(L"null.dir"); + empty = SysAllocString(L""); + hr = IFileSystem3_MoveFolder(fs3, str, NULL); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IFileSystem3_MoveFolder(fs3, NULL, str); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IFileSystem3_MoveFolder(fs3, str, empty); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + hr = IFileSystem3_MoveFolder(fs3, empty, str); + ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); + SysFreeString(str); + SysFreeString(empty); } static void test_DoOpenPipeStream(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/391
From: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> --- dlls/scrrun/tests/filesystem.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 48560a90a63..5b183b9436e 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2630,6 +2630,17 @@ static void test_MoveFolder(void) ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr); SysFreeString(str); SysFreeString(empty); + + ok(CreateDirectoryW(buffW1, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW1)); + ok(CreateDirectoryW(buffW2, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW2)); + src = SysAllocString(buffW1); + dst = SysAllocString(buffW2); + hr = IFileSystem3_MoveFolder(fs3, src, dst); /* dst already exists */ + ok(hr == CTL_E_FILEALREADYEXISTS, "Unexpected hr %#lx.\n", hr); + SysFreeString(src); + SysFreeString(dst); + ok(RemoveDirectoryW(buffW1), "can't remove %s directory\n", wine_dbgstr_w(buffW1)); + ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); } static void test_DoOpenPipeStream(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/391
From: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> --- dlls/scrrun/filesystem.c | 6 ++++++ dlls/scrrun/tests/filesystem.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 52e10239e05..4ab93a275a2 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3766,11 +3766,17 @@ static HRESULT WINAPI filesys_MoveFile(IFileSystem3 *iface, BSTR source, BSTR de static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface, BSTR source, BSTR destination) { + DWORD attrs; + TRACE("%p %s %s\n", iface, debugstr_w(source), debugstr_w(destination)); if(!source || !source[0] || !destination || !destination[0]) return E_INVALIDARG; + attrs = GetFileAttributesW(source); + if(attrs == INVALID_FILE_ATTRIBUTES) + return CTL_E_PATHNOTFOUND; + return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); } diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 5b183b9436e..8b84e743809 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2641,6 +2641,13 @@ static void test_MoveFolder(void) SysFreeString(dst); ok(RemoveDirectoryW(buffW1), "can't remove %s directory\n", wine_dbgstr_w(buffW1)); ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); + + src = SysAllocString(buffW1); + dst = SysAllocString(buffW2); + hr = IFileSystem3_MoveFolder(fs3, src, dst); /* src nonexistant */ + ok(hr == CTL_E_PATHNOTFOUND, "Unexpected hr %#lx.\n", hr); + SysFreeString(src); + SysFreeString(dst); } static void test_DoOpenPipeStream(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/391
From: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> --- dlls/scrrun/filesystem.c | 2 +- dlls/scrrun/tests/filesystem.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 4ab93a275a2..1fb6a253c0b 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3774,7 +3774,7 @@ static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface, BSTR source, BSTR return E_INVALIDARG; attrs = GetFileAttributesW(source); - if(attrs == INVALID_FILE_ATTRIBUTES) + if((attrs == INVALID_FILE_ATTRIBUTES) || !(attrs & FILE_ATTRIBUTE_DIRECTORY)) return CTL_E_PATHNOTFOUND; return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 8b84e743809..18c73ca03af 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2605,6 +2605,7 @@ static void test_MoveFolder(void) BSTR src, dst, str, empty; WCHAR buffW1[MAX_PATH],buffW2[MAX_PATH]; HRESULT hr; + File *file; get_temp_path(L"foo", buffW1); get_temp_path(L"bar", buffW2); @@ -2648,6 +2649,19 @@ static void test_MoveFolder(void) ok(hr == CTL_E_PATHNOTFOUND, "Unexpected hr %#lx.\n", hr); SysFreeString(src); SysFreeString(dst); + + file = CreateFileW(buffW1, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, NULL); + ok(file != INVALID_HANDLE_VALUE, "CreateFile failed\n"); + CloseHandle(file); + + src = SysAllocString(buffW1); + dst = SysAllocString(buffW2); + hr = IFileSystem3_MoveFolder(fs3, src, dst); /* src is regular file */ + ok(hr == CTL_E_PATHNOTFOUND, "Unexpected hr %#lx.\n", hr); + SysFreeString(src); + SysFreeString(dst); + DeleteFileW(buffW1); } static void test_DoOpenPipeStream(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/391
From: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> --- dlls/scrrun/filesystem.c | 16 ++++++++++++++ dlls/scrrun/tests/filesystem.c | 38 +++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 1fb6a253c0b..8280e22ed04 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3767,6 +3767,9 @@ static HRESULT WINAPI filesys_MoveFile(IFileSystem3 *iface, BSTR source, BSTR de static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface, BSTR source, BSTR destination) { DWORD attrs; + int len; + WCHAR src_drive[MAX_PATH],src_dir[MAX_PATH],dst_path[MAX_PATH], + file_name[MAX_PATH],file_ext[MAX_PATH]; TRACE("%p %s %s\n", iface, debugstr_w(source), debugstr_w(destination)); @@ -3777,6 +3780,19 @@ static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface, BSTR source, BSTR if((attrs == INVALID_FILE_ATTRIBUTES) || !(attrs & FILE_ATTRIBUTE_DIRECTORY)) return CTL_E_PATHNOTFOUND; + _wsplitpath(source, src_drive, src_dir, file_name, file_ext); + len = lstrlenW(destination); + + if (destination[len-1] == '\\' || destination[len-1] == '/') { + lstrcpyW(dst_path, destination); + lstrcatW(dst_path, file_name); + if (*file_ext) { + lstrcatW(dst_path, L"."); + lstrcatW(dst_path, file_ext); + } + TRACE("move %s to %s\n", debugstr_w(source), debugstr_w(dst_path)); + return MoveFileW(source, dst_path) ? S_OK : create_error(GetLastError()); + } return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); } diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 18c73ca03af..cddaf0517d5 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2603,7 +2603,7 @@ static void test_MoveFile(void) static void test_MoveFolder(void) { BSTR src, dst, str, empty; - WCHAR buffW1[MAX_PATH],buffW2[MAX_PATH]; + WCHAR buffW1[MAX_PATH],buffW2[MAX_PATH],pathW[MAX_PATH]; HRESULT hr; File *file; @@ -2662,6 +2662,42 @@ static void test_MoveFolder(void) SysFreeString(src); SysFreeString(dst); DeleteFileW(buffW1); + + GetTempPathW(MAX_PATH, buffW1); + lstrcatW(buffW1,L"foo"); + GetTempPathW(MAX_PATH, buffW2); + lstrcatW(buffW2,L"bar"); + ok(CreateDirectoryW(buffW1, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW1)); + ok(CreateDirectoryW(buffW2, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW2)); + lstrcpyW(pathW,buffW2); + lstrcatW(pathW,L"\\"); + src = SysAllocString(buffW1); + dst = SysAllocString(pathW); + hr = IFileSystem3_MoveFolder(fs3, src, dst); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + SysFreeString(src); + SysFreeString(dst); + lstrcatW(pathW,L"foo"); + ok(RemoveDirectoryW(pathW), "can't remove %s directory\n", wine_dbgstr_w(pathW)); + ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); + + GetTempPathW(MAX_PATH, buffW1); + lstrcatW(buffW1,L"foo"); + GetTempPathW(MAX_PATH, buffW2); + lstrcatW(buffW2,L"bar"); + ok(CreateDirectoryW(buffW1, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW1)); + ok(CreateDirectoryW(buffW2, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW2)); + lstrcpyW(pathW,buffW2); + lstrcatW(pathW,L"/"); + src = SysAllocString(buffW1); + dst = SysAllocString(pathW); + hr = IFileSystem3_MoveFolder(fs3, src, dst); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + SysFreeString(src); + SysFreeString(dst); + lstrcatW(pathW,L"foo"); + ok(RemoveDirectoryW(pathW), "can't remove %s directory\n", wine_dbgstr_w(pathW)); + ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); } static void test_DoOpenPipeStream(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/391
From: Robert Wilhelm <robert.wilhelm(a)gmx.net> Signed-off-by: Robert Wilhelm <robert.wilhelm(a)gmx.net> --- dlls/scrrun/Makefile.in | 2 +- dlls/scrrun/filesystem.c | 49 +++++++++++++++++++++++----------- dlls/scrrun/tests/filesystem.c | 27 ++++++++++++++++++- 3 files changed, 61 insertions(+), 17 deletions(-) diff --git a/dlls/scrrun/Makefile.in b/dlls/scrrun/Makefile.in index 12be899162b..21798694587 100644 --- a/dlls/scrrun/Makefile.in +++ b/dlls/scrrun/Makefile.in @@ -1,6 +1,6 @@ MODULE = scrrun.dll IMPORTLIB = scrrun -IMPORTS = uuid oleaut32 version advapi32 +IMPORTS = uuid oleaut32 version advapi32 shlwapi EXTRADLLFLAGS = -Wb,--prefer-native diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 8280e22ed04..fd87f559e4a 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -29,6 +29,7 @@ #include "olectl.h" #include "dispex.h" #include "ntsecapi.h" +#include "shlwapi.h" #include "scrrun.h" #include "scrrun_private.h" @@ -3768,32 +3769,50 @@ static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface, BSTR source, BSTR { DWORD attrs; int len; - WCHAR src_drive[MAX_PATH],src_dir[MAX_PATH],dst_path[MAX_PATH], + WCHAR src_path[MAX_PATH],src_drive[MAX_PATH],src_dir[MAX_PATH],dst_path[MAX_PATH], file_name[MAX_PATH],file_ext[MAX_PATH]; + WIN32_FIND_DATAW ffd; + HANDLE f; + BOOL wildcard = FALSE; TRACE("%p %s %s\n", iface, debugstr_w(source), debugstr_w(destination)); if(!source || !source[0] || !destination || !destination[0]) return E_INVALIDARG; - attrs = GetFileAttributesW(source); - if((attrs == INVALID_FILE_ATTRIBUTES) || !(attrs & FILE_ATTRIBUTE_DIRECTORY)) - return CTL_E_PATHNOTFOUND; - _wsplitpath(source, src_drive, src_dir, file_name, file_ext); + if (wcspbrk(file_name,L"*?") || wcspbrk(file_ext,L"*?")) + wildcard = TRUE; + + if (!wildcard) { + attrs = GetFileAttributesW(source); + if((attrs == INVALID_FILE_ATTRIBUTES) || !(attrs & FILE_ATTRIBUTE_DIRECTORY)) + return CTL_E_PATHNOTFOUND; + } + len = lstrlenW(destination); - if (destination[len-1] == '\\' || destination[len-1] == '/') { - lstrcpyW(dst_path, destination); - lstrcatW(dst_path, file_name); - if (*file_ext) { - lstrcatW(dst_path, L"."); - lstrcatW(dst_path, file_ext); - } - TRACE("move %s to %s\n", debugstr_w(source), debugstr_w(dst_path)); - return MoveFileW(source, dst_path) ? S_OK : create_error(GetLastError()); + if (wildcard || destination[len-1] == '\\' || destination[len-1] == '/') { + f = FindFirstFileW(source, &ffd); + if(f == INVALID_HANDLE_VALUE) + return create_error(GetLastError()); + + do { + lstrcpyW(dst_path, destination); + lstrcpyW(src_path, src_drive); + lstrcatW(src_path, src_dir); + if (!PathAppendW(src_path, ffd.cFileName)) return create_error(GetLastError()); + if (!PathAppendW(dst_path, ffd.cFileName)) return create_error(GetLastError()); + TRACE("move %s to %s\n", debugstr_w(src_path), debugstr_w(dst_path)); + if (!MoveFileW(src_path, dst_path)) + return create_error(GetLastError()); + } while(FindNextFileW(f, &ffd)); + FindClose(f); } - return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); + else { + return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); + } + return S_OK; } static inline HRESULT copy_file(const WCHAR *source, DWORD source_len, diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index cddaf0517d5..e46917c133b 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2603,7 +2603,7 @@ static void test_MoveFile(void) static void test_MoveFolder(void) { BSTR src, dst, str, empty; - WCHAR buffW1[MAX_PATH],buffW2[MAX_PATH],pathW[MAX_PATH]; + WCHAR buffW1[MAX_PATH], buffW2[MAX_PATH], pathW[MAX_PATH], srcW[MAX_PATH]; HRESULT hr; File *file; @@ -2698,6 +2698,31 @@ static void test_MoveFolder(void) lstrcatW(pathW,L"foo"); ok(RemoveDirectoryW(pathW), "can't remove %s directory\n", wine_dbgstr_w(pathW)); ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); + + GetTempPathW(MAX_PATH, buffW1); + lstrcatW(buffW1,L"foo1"); + GetTempPathW(MAX_PATH, buffW2); + lstrcatW(buffW2,L"foo2"); + GetTempPathW(MAX_PATH, srcW); + lstrcatW(srcW,L"foo?"); + GetTempPathW(MAX_PATH, pathW); + lstrcatW(pathW,L"bar"); + ok(CreateDirectoryW(buffW1, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW1)); + ok(CreateDirectoryW(buffW2, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(buffW2)); + ok(CreateDirectoryW(pathW, NULL), "CreateDirectory(%s) failed\n", wine_dbgstr_w(pathW)); + src = SysAllocString(srcW); + dst = SysAllocString(pathW); + hr = IFileSystem3_MoveFolder(fs3, src, dst); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + SysFreeString(src); + SysFreeString(dst); + lstrcpyW(buffW1,pathW); + lstrcatW(buffW1,L"\\foo1"); + lstrcpyW(buffW2,pathW); + lstrcatW(buffW2,L"\\foo2"); + ok(RemoveDirectoryW(buffW1), "can't remove %s directory\n", wine_dbgstr_w(buffW1)); + ok(RemoveDirectoryW(buffW2), "can't remove %s directory\n", wine_dbgstr_w(buffW2)); + ok(RemoveDirectoryW(pathW), "can't remove %s directory\n", wine_dbgstr_w(pathW)); } static void test_DoOpenPipeStream(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/391
On Thu Jul 7 15:26:36 2022 +0000, Akihiro Sagawa wrote:
How about to add `IFileSystem3_MoveFolder(fs3, "", str);` and `IFileSystem3_MoveFolder(fs3, str, "");`? Thanks for the review. For empty string we get E_INVALIDARG, too. I pushed new revision which should address all your issues.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/391#note_3565
participants (2)
-
Robert Wilhelm -
Robert Wilhelm (@sloper42)