diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/param/loadparm.c | 36 |
2 files changed, 26 insertions, 11 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 46600e2db2..6dd9c7e7e8 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4079,6 +4079,7 @@ bool lp_string_is_valid_boolean(const char *parm_value); bool lp_invert_boolean(const char *str, const char **inverse_str); bool lp_canonicalize_boolean(const char *str, const char**canon_str); bool service_ok(int iService); +bool process_registry_service(const char *service_name); bool lp_config_backend_is_registry(void); bool lp_config_backend_is_file(void); bool lp_file_list_changed(void); diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 7e2affed08..380b9e1b8c 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -6824,10 +6824,10 @@ static bool process_smbconf_service(struct smbconf_service *service) return true; } -/* - * process_registry_globals +/** + * load a service from registry and activate it */ -static bool process_registry_globals(void) +bool process_registry_service(const char *service_name) { WERROR werr; struct smbconf_service *service = NULL; @@ -6839,19 +6839,18 @@ static bool process_registry_globals(void) goto done; } - ret = do_parameter("registry shares", "yes", NULL); - if (!ret) { - goto done; - } + DEBUG(5, ("process_registry_service: service name %s\n", service_name)); - if (!smbconf_share_exists(conf_ctx, GLOBAL_NAME)) { - /* nothing to read from the registry yet but make sure lp_load - * doesn't return false */ + if (!smbconf_share_exists(conf_ctx, service_name)) { + /* + * Registry does not contain data for this service (yet), + * but make sure lp_load doesn't return false. + */ ret = true; goto done; } - werr = smbconf_get_share(conf_ctx, mem_ctx, GLOBAL_NAME, &service); + werr = smbconf_get_share(conf_ctx, mem_ctx, service_name, &service); if (!W_ERROR_IS_OK(werr)) { goto done; } @@ -6869,6 +6868,21 @@ done: return ret; } +/* + * process_registry_globals + */ +static bool process_registry_globals(void) +{ + bool ret; + + ret = do_parameter("registry shares", "yes", NULL); + if (!ret) { + return ret; + } + + return process_registry_service(GLOBAL_NAME); +} + static bool process_registry_shares(void) { WERROR werr; |