[PATCH 7/8] mstask: Implement setting and getting working directory using IExecAction.

Dmitry Timoshkov dmitry at baikal.ru
Fri Mar 30 04:00:02 CDT 2018


Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/mstask/task.c | 45 +++++++++++++++++++++++++++++++++++----------
 1 file changed, 35 insertions(+), 10 deletions(-)

diff --git a/dlls/mstask/task.c b/dlls/mstask/task.c
index 1aba435efd..ed0b984d84 100644
--- a/dlls/mstask/task.c
+++ b/dlls/mstask/task.c
@@ -533,20 +533,45 @@ static HRESULT WINAPI MSTASK_ITask_GetParameters(ITask *iface, LPWSTR *params)
     return hr;
 }
 
-static HRESULT WINAPI MSTASK_ITask_SetWorkingDirectory(
-        ITask* iface,
-        LPCWSTR pwszWorkingDirectory)
+static HRESULT WINAPI MSTASK_ITask_SetWorkingDirectory(ITask * iface, LPCWSTR workdir)
 {
-    FIXME("(%p, %s): stub\n", iface, debugstr_w(pwszWorkingDirectory));
-    return E_NOTIMPL;
+    TaskImpl *This = impl_from_ITask(iface);
+
+    TRACE("(%p, %s)\n", iface, debugstr_w(workdir));
+
+    if (!workdir || !workdir[0])
+        workdir = NULL;
+
+    return IExecAction_put_WorkingDirectory(This->action, (BSTR)workdir);
 }
 
-static HRESULT WINAPI MSTASK_ITask_GetWorkingDirectory(
-        ITask* iface,
-        LPWSTR *ppwszWorkingDirectory)
+static HRESULT WINAPI MSTASK_ITask_GetWorkingDirectory(ITask *iface, LPWSTR *workdir)
 {
-    FIXME("(%p, %p): stub\n", iface, ppwszWorkingDirectory);
-    return E_NOTIMPL;
+    TaskImpl *This = impl_from_ITask(iface);
+    HRESULT hr;
+    BSTR dir;
+    DWORD len;
+
+    TRACE("(%p, %p)\n", iface, workdir);
+
+    hr = IExecAction_get_WorkingDirectory(This->action, &dir);
+    if (hr != S_OK) return hr;
+
+    len = dir ? lstrlenW(dir) + 1 : 1;
+    *workdir = CoTaskMemAlloc(len * sizeof(WCHAR));
+    if (*workdir)
+    {
+        if (!dir)
+            *workdir[0] = 0;
+        else
+            lstrcpyW(*workdir, dir);
+        hr = S_OK;
+    }
+    else
+        hr =  E_OUTOFMEMORY;
+
+    SysFreeString(dir);
+    return hr;
 }
 
 static HRESULT WINAPI MSTASK_ITask_SetPriority(
-- 
2.16.2




More information about the wine-devel mailing list