Jacek Caban : scrrun: Add MoveFile implementation.

Alexandre Julliard julliard at winehq.org
Fri Aug 7 10:42:28 CDT 2020


Module: wine
Branch: stable
Commit: bca27013801178d0ed0b98f732fe6c27d4e824ea
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=bca27013801178d0ed0b98f732fe6c27d4e824ea

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Jan 27 15:40:22 2020 +0100

scrrun: Add MoveFile implementation.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit c8c00d6f4ab7adf8ca64723125c25250e2888198)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/scrrun/filesystem.c       |  7 ++---
 dlls/scrrun/tests/filesystem.c | 62 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 65 insertions(+), 4 deletions(-)

diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c
index 5893435af7..d537239b3a 100644
--- a/dlls/scrrun/filesystem.c
+++ b/dlls/scrrun/filesystem.c
@@ -3638,12 +3638,11 @@ static HRESULT WINAPI filesys_DeleteFolder(IFileSystem3 *iface, BSTR FolderSpec,
     return delete_folder(FolderSpec, SysStringLen(FolderSpec), Force);
 }
 
-static HRESULT WINAPI filesys_MoveFile(IFileSystem3 *iface, BSTR Source,
-                                            BSTR Destination)
+static HRESULT WINAPI filesys_MoveFile(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 HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface,BSTR Source,
diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 68ac70ce3a..c96f704ca7 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -2467,6 +2467,67 @@ static void test_GetSpecialFolder(void)
     IFolder_Release(folder);
 }
 
+static void test_MoveFile(void)
+{
+    ITextStream *stream;
+    BSTR str, src, dst;
+    HRESULT hr;
+
+    str = SysAllocString(L"test.txt");
+    hr = IFileSystem3_CreateTextFile(fs3, str, VARIANT_FALSE, VARIANT_FALSE, &stream);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(str);
+
+    str = SysAllocString(L"test");
+    hr = ITextStream_Write(stream, str);
+    ok(hr == S_OK, "Write failed: %08x\n", hr);
+    SysFreeString(str);
+
+    ITextStream_Release(stream);
+
+    str = SysAllocString(L"test2.txt");
+    hr = IFileSystem3_CreateTextFile(fs3, str, VARIANT_FALSE, VARIANT_FALSE, &stream);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(str);
+    ITextStream_Release(stream);
+
+    src = SysAllocString(L"test.txt");
+    dst = SysAllocString(L"test3.txt");
+    hr = IFileSystem3_MoveFile(fs3, src, dst);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(src);
+    SysFreeString(dst);
+
+    str = SysAllocString(L"test.txt");
+    hr = IFileSystem3_DeleteFile(fs3, str, VARIANT_TRUE);
+    ok(hr == CTL_E_FILENOTFOUND, "DeleteFile returned %x, expected CTL_E_FILENOTFOUND\n", hr);
+    SysFreeString(str);
+
+    src = SysAllocString(L"test3.txt");
+    dst = SysAllocString(L"test2.txt"); /* already exists */
+    hr = IFileSystem3_MoveFile(fs3, src, dst);
+    ok(hr == CTL_E_FILEALREADYEXISTS, "got 0x%08x, expected CTL_E_FILEALREADYEXISTS\n", hr);
+    SysFreeString(src);
+    SysFreeString(dst);
+
+    src = SysAllocString(L"nonexistent.txt");
+    dst = SysAllocString(L"test4.txt");
+    hr = IFileSystem3_MoveFile(fs3, src, dst);
+    ok(hr == CTL_E_FILENOTFOUND, "got 0x%08x, expected CTL_E_FILENOTFOUND\n", hr);
+    SysFreeString(src);
+    SysFreeString(dst);
+
+    str = SysAllocString(L"test3.txt");
+    hr = IFileSystem3_DeleteFile(fs3, str, VARIANT_TRUE);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(str);
+
+    str = SysAllocString(L"test2.txt");
+    hr = IFileSystem3_DeleteFile(fs3, str, VARIANT_TRUE);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(str);
+}
+
 START_TEST(filesystem)
 {
     HRESULT hr;
@@ -2506,6 +2567,7 @@ START_TEST(filesystem)
     test_SerialNumber();
     test_GetExtensionName();
     test_GetSpecialFolder();
+    test_MoveFile();
 
     IFileSystem3_Release(fs3);
 




More information about the wine-cvs mailing list