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