Stefan Leichter : regedit: Replace call to delete_branch with RegDeleteTreeA.

Alexandre Julliard julliard at winehq.org
Wed Oct 10 06:46:18 CDT 2007


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

Author: Stefan Leichter <Stefan.Leichter at camline.com>
Date:   Tue Oct  9 23:50:18 2007 +0200

regedit: Replace call to delete_branch with RegDeleteTreeA.

---

 programs/regedit/regproc.c |   65 +-------------------------------------------
 1 files changed, 1 insertions(+), 64 deletions(-)

diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c
index fb7f37c..e17a973 100644
--- a/programs/regedit/regproc.c
+++ b/programs/regedit/regproc.c
@@ -951,53 +951,6 @@ BOOL import_registry_file(LPTSTR filename)
 }
 
 /******************************************************************************
- * Recursive function which removes the registry key with all subkeys.
- */
-static void delete_branch(HKEY key,
-                   CHAR **reg_key_name_buf, DWORD *reg_key_name_len)
-{
-    HKEY branch_key;
-    DWORD max_sub_key_len;
-    DWORD subkeys;
-    DWORD curr_len;
-    LONG ret;
-    long int i;
-
-    if (RegOpenKey(key, *reg_key_name_buf, &branch_key) != ERROR_SUCCESS) {
-        REGPROC_print_error();
-    }
-
-    /* get size information and resize the buffers if necessary */
-    if (RegQueryInfoKey(branch_key, NULL, NULL, NULL,
-                        &subkeys, &max_sub_key_len,
-                        NULL, NULL, NULL, NULL, NULL, NULL
-                       ) != ERROR_SUCCESS) {
-        REGPROC_print_error();
-    }
-    curr_len = strlen(*reg_key_name_buf);
-    REGPROC_resize_char_buffer(reg_key_name_buf, reg_key_name_len,
-                               max_sub_key_len + curr_len + 1);
-
-    (*reg_key_name_buf)[curr_len] = '\\';
-    for (i = subkeys - 1; i >= 0; i--) {
-        DWORD buf_len = *reg_key_name_len - curr_len;
-
-        ret = RegEnumKeyEx(branch_key, i, *reg_key_name_buf + curr_len + 1,
-                           &buf_len, NULL, NULL, NULL, NULL);
-        if (ret != ERROR_SUCCESS &&
-                ret != ERROR_MORE_DATA &&
-                ret != ERROR_NO_MORE_ITEMS) {
-            REGPROC_print_error();
-        } else {
-            delete_branch(key, reg_key_name_buf, reg_key_name_len);
-        }
-    }
-    (*reg_key_name_buf)[curr_len] = '\0';
-    RegCloseKey(branch_key);
-    RegDeleteKey(key, *reg_key_name_buf);
-}
-
-/******************************************************************************
  * Removes the registry key with all subkeys. Parses full key name.
  *
  * Parameters:
@@ -1008,7 +961,6 @@ void delete_registry_key(CHAR *reg_key_name)
 {
     CHAR *key_name;
     HKEY key_class;
-    HKEY branch_key;
 
     if (!reg_key_name || !reg_key_name[0])
         return;
@@ -1024,20 +976,5 @@ void delete_registry_key(CHAR *reg_key_name)
         exit(1);
     }
 
-    /* open the specified key to make sure it exists */
-    if (RegOpenKey(key_class, key_name, &branch_key) == ERROR_SUCCESS) {
-        CHAR *branch_name;
-        DWORD branch_name_len;
-        RegCloseKey(branch_key);
-
-        /* Copy the key name to a new buffer that delete_branch() can
-         * reallocate as needed
-         */
-        branch_name_len = strlen(key_name);
-        branch_name = HeapAlloc(GetProcessHeap(), 0, branch_name_len+1);
-        CHECK_ENOUGH_MEMORY(branch_name);
-        strcpy(branch_name, key_name);
-        delete_branch(key_class, &branch_name, &branch_name_len);
-        HeapFree(GetProcessHeap(), 0, branch_name);
-    }
+    RegDeleteTreeA(key_class, key_name);
 }




More information about the wine-cvs mailing list