Hans Leidekker : msi: Split up delete_reg_key_or_value.

Alexandre Julliard julliard at winehq.org
Thu Dec 1 14:05:33 CST 2011


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Thu Dec  1 13:04:19 2011 +0100

msi: Split up delete_reg_key_or_value.

---

 dlls/msi/action.c |   32 +++++++++++++++-----------------
 1 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index 6bc4fff..c3e971e 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -2689,40 +2689,36 @@ static UINT ACTION_WriteRegistryValues(MSIPACKAGE *package)
     return rc;
 }
 
-static void delete_reg_key_or_value( HKEY hkey_root, LPCWSTR key, LPCWSTR value, BOOL delete_key )
+static void delete_reg_value( HKEY root, const WCHAR *keypath, const WCHAR *value )
 {
     LONG res;
     HKEY hkey;
     DWORD num_subkeys, num_values;
 
-    if (delete_key)
-    {
-        if ((res = RegDeleteTreeW( hkey_root, key )))
-        {
-            TRACE("Failed to delete key %s (%d)\n", debugstr_w(key), res);
-        }
-        return;
-    }
-
-    if (!(res = RegOpenKeyW( hkey_root, key, &hkey )))
+    if (!(res = RegOpenKeyW( root, keypath, &hkey )))
     {
         if ((res = RegDeleteValueW( hkey, value )))
         {
-            TRACE("Failed to delete value %s (%d)\n", debugstr_w(value), res);
+            TRACE("failed to delete value %s (%d)\n", debugstr_w(value), res);
         }
         res = RegQueryInfoKeyW( hkey, NULL, NULL, NULL, &num_subkeys, NULL, NULL, &num_values,
                                 NULL, NULL, NULL, NULL );
         RegCloseKey( hkey );
         if (!res && !num_subkeys && !num_values)
         {
-            TRACE("Removing empty key %s\n", debugstr_w(key));
-            RegDeleteKeyW( hkey_root, key );
+            TRACE("removing empty key %s\n", debugstr_w(keypath));
+            RegDeleteKeyW( root, keypath );
         }
         return;
     }
-    TRACE("Failed to open key %s (%d)\n", debugstr_w(key), res);
+    TRACE("failed to open key %s (%d)\n", debugstr_w(keypath), res);
 }
 
+static void delete_reg_key( HKEY root, const WCHAR *keypath )
+{
+    LONG res = RegDeleteTreeW( root, keypath );
+    if (res) TRACE("failed to delete key %s (%d)\n", debugstr_w(keypath), res);
+}
 
 static UINT ITERATE_RemoveRegistryValuesOnUninstall( MSIRECORD *row, LPVOID param )
 {
@@ -2779,7 +2775,8 @@ static UINT ITERATE_RemoveRegistryValuesOnUninstall( MSIRECORD *row, LPVOID para
 
     keypath = get_keypath( package, hkey_root, deformated_key );
     msi_free( deformated_key );
-    delete_reg_key_or_value( hkey_root, keypath, deformated_name, delete_key );
+    if (delete_key) delete_reg_key( hkey_root, keypath );
+    else delete_reg_value( hkey_root, keypath, deformated_name );
     msi_free( keypath );
 
     uirow = MSI_CreateRecord( 2 );
@@ -2843,7 +2840,8 @@ static UINT ITERATE_RemoveRegistryValuesOnInstall( MSIRECORD *row, LPVOID param
 
     keypath = get_keypath( package, hkey_root, deformated_key );
     msi_free( deformated_key );
-    delete_reg_key_or_value( hkey_root, keypath, deformated_name, delete_key );
+    if (delete_key) delete_reg_key( hkey_root, keypath );
+    else delete_reg_value( hkey_root, keypath, deformated_name );
     msi_free( keypath );
 
     uirow = MSI_CreateRecord( 2 );




More information about the wine-cvs mailing list