Initialize the cache tree if it has not been initialized yet.
*********************************************************************/
-bool reghook_cache_init( void )
+WERROR reghook_cache_init(void)
{
if (cache_tree == NULL) {
cache_tree = pathtree_init(®db_ops, NULL);
- if (cache_tree != NULL) {
- DEBUG(10, ("reghook_cache_init: new tree with default "
- "ops %p for key [%s]\n", (void *)®db_ops,
- KEY_TREE_ROOT));
+ if (cache_tree == NULL) {
+ return WERR_NOMEM;
}
+ DEBUG(10, ("reghook_cache_init: new tree with default "
+ "ops %p for key [%s]\n", (void *)®db_ops,
+ KEY_TREE_ROOT));
}
- return (cache_tree != NULL);
+ return WERR_OK;
}
/**********************************************************************
}
regdb_close();
- reghook_cache_init();
+ werr = reghook_cache_init();
+ if (!W_ERROR_IS_OK(werr)) {
+ DEBUG(1, ("Failed to initialize the reghook cache: %s\n",
+ dos_errstr(werr)));
+ return false;
+ }
return true;
}
/* build the cache tree of registry hooks */
- reghook_cache_init();
+ werr = reghook_cache_init();
+ if (!W_ERROR_IS_OK(werr)) {
+ DEBUG(0, ("Failed to initialize the reghook cache: %s\n",
+ dos_errstr(werr)));
+ goto fail;
+ }
for ( i=0; reg_hooks[i].keyname; i++ ) {
if (!reghook_cache_add(reg_hooks[i].keyname, reg_hooks[i].ops))
goto done;
}
- reghook_cache_init();
+ werr = reghook_cache_init();
+ if (!W_ERROR_IS_OK(werr)) {
+ DEBUG(1, ("Failed to initialize the reghook cache: %s\n",
+ dos_errstr(werr)));
+ goto done;
+ }
+
if (!reghook_cache_add(keyname, &smbconf_reg_ops)) {
DEBUG(1, ("Failed to add smbconf reghooks to reghook cache\n"));
goto done;