Nikolay Sivov : scrrun: Implement Name() property for Folder.

Alexandre Julliard julliard at winehq.org
Mon Jan 6 14:47:12 CST 2014


Module: wine
Branch: master
Commit: 42d2b51992fe3644c1705fc0e054928e8da9a17b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=42d2b51992fe3644c1705fc0e054928e8da9a17b

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Jan  6 01:22:32 2014 +0400

scrrun: Implement Name() property for Folder.

---

 dlls/scrrun/filesystem.c       |   24 ++++++++++++++++++++++--
 dlls/scrrun/tests/filesystem.c |    6 ++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c
index 81d6a07..91a2795 100644
--- a/dlls/scrrun/filesystem.c
+++ b/dlls/scrrun/filesystem.c
@@ -892,8 +892,26 @@ static HRESULT WINAPI folder_get_Path(IFolder *iface, BSTR *path)
 static HRESULT WINAPI folder_get_Name(IFolder *iface, BSTR *name)
 {
     struct folder *This = impl_from_IFolder(iface);
-    FIXME("(%p)->(%p): stub\n", This, name);
-    return E_NOTIMPL;
+    WCHAR *ptr;
+
+    TRACE("(%p)->(%p)\n", This, name);
+
+    if(!name)
+        return E_POINTER;
+
+    *name = NULL;
+
+    ptr = strrchrW(This->path, '\\');
+    if (ptr)
+    {
+        *name = SysAllocString(ptr+1);
+        TRACE("%s\n", debugstr_w(*name));
+        if (!*name) return E_OUTOFMEMORY;
+    }
+    else
+        return E_FAIL;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI folder_put_Name(IFolder *iface, BSTR name)
@@ -1072,6 +1090,8 @@ HRESULT create_folder(const WCHAR *path, IFolder **folder)
 
     *folder = NULL;
 
+    TRACE("%s\n", debugstr_w(path));
+
     This = heap_alloc(sizeof(struct folder));
     if (!This) return E_OUTOFMEMORY;
 
diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 6d1b913..9df619f 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -882,6 +882,12 @@ if (hr == S_OK) {
 
     hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IFolder, (void**)&folder);
     ok(hr == S_OK, "got 0x%08x\n", hr);
+
+    str = NULL;
+    hr = IFolder_get_Name(folder, &str);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(str);
+
     IFolder_Release(folder);
     VariantClear(&var);
 




More information about the wine-cvs mailing list