Module: wine Branch: master Commit: 3003ee9ba1a395a3da20d54efb6641759d942635 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3003ee9ba1a395a3da20d54efb...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Mon Jan 20 16:04:58 2014 +0900
taskschd: Implement ITaskFolder::DeleteFolder.
---
dlls/taskschd/folder.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-)
diff --git a/dlls/taskschd/folder.c b/dlls/taskschd/folder.c index cb285fd..9114417 100644 --- a/dlls/taskschd/folder.c +++ b/dlls/taskschd/folder.c @@ -137,6 +137,29 @@ static HRESULT reg_open_folder(const WCHAR *path, HKEY *hfolder) return HRESULT_FROM_WIN32(ret); }
+static HRESULT reg_delete_folder(const WCHAR *path, const WCHAR *name) +{ + HKEY hroot, hfolder; + DWORD ret; + + ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, root, &hroot); + if (ret) return HRESULT_FROM_WIN32(ret); + + while (*path == '\') path++; + ret = RegOpenKeyExW(hroot, path, 0, DELETE, &hfolder); + + RegCloseKey(hroot); + + while (*name == '\') name++; + if (ret == ERROR_SUCCESS) + { + ret = RegDeleteKeyW(hfolder, name); + RegCloseKey(hfolder); + } + + return HRESULT_FROM_WIN32(ret); +} + static inline void reg_close_folder(HKEY hfolder) { RegCloseKey(hfolder); @@ -176,8 +199,14 @@ static HRESULT WINAPI TaskFolder_CreateFolder(ITaskFolder *iface, BSTR name, VAR
static HRESULT WINAPI TaskFolder_DeleteFolder(ITaskFolder *iface, BSTR name, LONG flags) { - FIXME("%p,%s,%x: stub\n", iface, debugstr_w(name), flags); - return E_NOTIMPL; + TaskFolder *folder = impl_from_ITaskFolder(iface); + + TRACE("%p,%s,%x\n", iface, debugstr_w(name), flags); + + if (flags) + FIXME("unsupported flags %x\n", flags); + + return reg_delete_folder(folder->path, name); }
static HRESULT WINAPI TaskFolder_GetTask(ITaskFolder *iface, BSTR path, IRegisteredTask **task)