Module: wine Branch: master Commit: 42d2b51992fe3644c1705fc0e054928e8da9a17b URL: http://source.winehq.org/git/wine.git/?a=commit;h=42d2b51992fe3644c1705fc0e0...
Author: Nikolay Sivov nsivov@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);