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;
}
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 )
if ( !keyname )
return False;
+ strupper_m( keyname );
+
/* allocate some initial memory */
buffer = malloc(sizeof(pstring));
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 );
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);
SAFE_FREE( dbuf.dptr );
+ DEBUG(10,("regdb_fetch_reg_keys: Exit [%d] items\n", num_items));
+
return num_items;
}