Hans Leidekker : services: Save service dependencies.

Alexandre Julliard julliard at winehq.org
Fri Oct 22 12:30:45 CDT 2010


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Fri Oct 22 10:35:37 2010 +0200

services: Save service dependencies.

---

 programs/services/services.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/programs/services/services.c b/programs/services/services.c
index 59fe8bc..1ecf30b 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -154,6 +154,25 @@ static DWORD reg_set_string_value(HKEY hKey, LPCWSTR value_name, LPCWSTR string)
     return RegSetValueExW(hKey, value_name, 0, REG_SZ, (const BYTE*)string, sizeof(WCHAR)*(strlenW(string) + 1));
 }
 
+static DWORD reg_set_multisz_value(HKEY hKey, LPCWSTR value_name, LPCWSTR string)
+{
+    const WCHAR *ptr;
+
+    if (!string)
+    {
+        DWORD err;
+        err = RegDeleteValueW(hKey, value_name);
+        if (err != ERROR_FILE_NOT_FOUND)
+            return err;
+
+        return ERROR_SUCCESS;
+    }
+
+    ptr = string;
+    while (*ptr) ptr += strlenW(ptr) + 1;
+    return RegSetValueExW(hKey, value_name, 0, REG_MULTI_SZ, (const BYTE*)string, sizeof(WCHAR)*(ptr - string + 1));
+}
+
 DWORD save_service_config(struct service_entry *entry)
 {
     DWORD err;
@@ -173,6 +192,10 @@ DWORD save_service_config(struct service_entry *entry)
         goto cleanup;
     if ((err = reg_set_string_value(hKey, SZ_DESCRIPTION, entry->description)) != 0)
         goto cleanup;
+    if ((err = reg_set_multisz_value(hKey, SZ_DEPEND_ON_SERVICE, entry->dependOnServices)) != 0)
+        goto cleanup;
+    if ((err = reg_set_multisz_value(hKey, SZ_DEPEND_ON_GROUP, entry->dependOnGroups)) != 0)
+        goto cleanup;
     if ((err = RegSetValueExW(hKey, SZ_START, 0, REG_DWORD, (LPBYTE)&entry->config.dwStartType, sizeof(DWORD))) != 0)
         goto cleanup;
     if ((err = RegSetValueExW(hKey, SZ_ERROR, 0, REG_DWORD, (LPBYTE)&entry->config.dwErrorControl, sizeof(DWORD))) != 0)




More information about the wine-cvs mailing list