Back out idra's change (at his request) - the values in the tdb *should* be
[kai/samba.git] / source3 / registry / reg_db.c
index 714e14e48bad2d691a41bb505b4b02bbccc6a25d..b4c8f60ccf5257f2dbb78737f49bbccb7e38420e 100644 (file)
@@ -106,6 +106,12 @@ static BOOL init_registry_data( void )
        if ( !regdb_store_reg_keys( keyname, &subkeys ) )
                return False;
                
+       /* HKEY_CLASSES_ROOT*/
+               
+       pstrcpy( keyname, KEY_HKCR );
+       if ( !regdb_store_reg_keys( keyname, &subkeys ) )
+               return False;
+               
        return True;
 }
 
@@ -157,7 +163,8 @@ BOOL init_registry_db( void )
  fstrings
 
  The full path to the registry key is used as database after the 
- \'s are converted to /'s.
+ \'s are converted to /'s.  Key string is also normalized to UPPER
+ case.
  ***********************************************************************/
  
 BOOL regdb_store_reg_keys( char *keyname, REGSUBKEY_CTR *ctr )
@@ -172,6 +179,8 @@ BOOL regdb_store_reg_keys( char *keyname, REGSUBKEY_CTR *ctr )
        if ( !keyname )
                return False;
        
+       strupper_m( keyname  );
+       
        /* allocate some initial memory */
                
        buffer = malloc(sizeof(pstring));
@@ -233,11 +242,13 @@ int regdb_fetch_reg_keys( char* key, REGSUBKEY_CTR *ctr )
        int i;
        fstring subkeyname;
 
+       DEBUG(10,("regdb_fetch_reg_keys: Enter key => [%s]\n", key ? key : "NULL"));
        
        pstrcpy( path, key );
        
        /* convert to key format */
        pstring_sub( path, "\\", "/" ); 
+       strupper_m( path );
        
        dbuf = tdb_fetch_by_string( tdb_reg, path );
        
@@ -245,8 +256,8 @@ int regdb_fetch_reg_keys( char* key, REGSUBKEY_CTR *ctr )
        buflen = dbuf.dsize;
        
        if ( !buf ) {
-               DEBUG(5,("regdb_fetch_reg_keys: Failed to fetch any subkeys for [%s]\n", key));
-               return 0;
+               DEBUG(5,("regdb_fetch_reg_keys: tdb lookup failed to locate key [%s]\n", key));
+               return -1;
        }
        
        len = tdb_unpack( buf, buflen, "d", &num_items);
@@ -258,6 +269,8 @@ int regdb_fetch_reg_keys( char* key, REGSUBKEY_CTR *ctr )
 
        SAFE_FREE( dbuf.dptr );
        
+       DEBUG(10,("regdb_fetch_reg_keys: Exit [%d] items\n", num_items));
+       
        return num_items;
 }