When deleting a key from the registry make sure the non-default
[gd/samba/.git] / source / registry / reg_cachehook.c
index 547eed392d87e138ba386cbdbb3c24e36013aea7..739facac99a9b822e8e157caaf4a2e1f944c8e82 100644 (file)
@@ -1,11 +1,11 @@
 /* 
  *  Unix SMB/CIFS implementation.
- *  RPC Pipe client / server routines
+ *  Virtual Windows Registry Layer
  *  Copyright (C) Gerald Carter                     2002.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
+ *  the Free Software Foundation; either version 3 of the License, or
  *  (at your option) any later version.
  *  
  *  This program is distributed in the hope that it will be useful,
  *  GNU General Public License for more details.
  *  
  *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Implementation of registry hook cache tree */
 
 #include "includes.h"
+#include "adt_tree.h"
 
 #undef DBGC_CLASS
-#define DBGC_CLASS DBGC_RPC_SRV
+#define DBGC_CLASS DBGC_REGISTRY
 
 static SORTED_TREE *cache_tree;
 extern REGISTRY_OPS regdb_ops;         /* these are the default */
@@ -33,9 +33,9 @@ static REGISTRY_HOOK default_hook = { KEY_TREE_ROOT, &regdb_ops };
  Initialize the cache tree
  *********************************************************************/
 
-BOOL reghook_cache_init( void )
+bool reghook_cache_init( void )
 {
-       cache_tree = sorted_tree_init( &default_hook, NULL, NULL );
+       cache_tree = pathtree_init( &default_hook, NULL );
 
        return ( cache_tree == NULL );
 }
@@ -45,7 +45,7 @@ BOOL reghook_cache_init( void )
  is not in the exact format that a SORTED_TREE expects.
  *********************************************************************/
 
-BOOL reghook_cache_add( REGISTRY_HOOK *hook )
+bool reghook_cache_add( REGISTRY_HOOK *hook )
 {
        pstring key;
        
@@ -59,14 +59,14 @@ BOOL reghook_cache_add( REGISTRY_HOOK *hook )
 
        DEBUG(10,("reghook_cache_add: Adding key [%s]\n", key));
                
-       return sorted_tree_add( cache_tree, key, hook );
+       return pathtree_add( cache_tree, key, hook );
 }
 
 /**********************************************************************
  Initialize the cache tree
  *********************************************************************/
 
-REGISTRY_HOOK* reghook_cache_find( char *keyname )
+REGISTRY_HOOK* reghook_cache_find( const char *keyname )
 {
        char *key;
        int len;
@@ -78,7 +78,7 @@ REGISTRY_HOOK* reghook_cache_find( char *keyname )
        /* prepend the string with a '\' character */
        
        len = strlen( keyname );
-       if ( !(key = malloc( len + 2 )) ) {
+       if ( !(key = (char *)SMB_MALLOC( len + 2 )) ) {
                DEBUG(0,("reghook_cache_find: malloc failed for string [%s] !?!?!\n",
                        keyname));
                return NULL;
@@ -93,7 +93,7 @@ REGISTRY_HOOK* reghook_cache_find( char *keyname )
                
        DEBUG(10,("reghook_cache_find: Searching for keyname [%s]\n", key));
        
-       hook = sorted_tree_find( cache_tree, key ) ;
+       hook = (REGISTRY_HOOK *)pathtree_find( cache_tree, key ) ;
        
        SAFE_FREE( key );
        
@@ -108,5 +108,5 @@ void reghook_dump_cache( int debuglevel )
 {
        DEBUG(debuglevel,("reghook_dump_cache: Starting cache dump now...\n"));
        
-       sorted_tree_print_keys( cache_tree, debuglevel );
+       pathtree_print_keys( cache_tree, debuglevel );
 }