1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

lib/param: clean up lpcfg_get_parametric

Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
Garming Sam 2014-02-25 16:36:57 +13:00 committed by Jeremy Allison
parent b93ed0a73b
commit 687b35931d

View File

@ -251,26 +251,17 @@ const char *lpcfg_get_parametric(struct loadparm_context *lp_ctx,
return lp_ctx->s3_fns->get_parametric(service, type, option, NULL);
}
data = (service == NULL ? lp_ctx->globals->param_opt : service->param_opt);
vfskey = talloc_asprintf(NULL, "%s:%s", type, option);
if (vfskey == NULL) {
DEBUG(0,("asprintf failed!\n"));
return NULL;
}
while (data) {
if (strwicmp(data->key, vfskey) == 0) {
talloc_free(vfskey);
return data->value;
}
data = data->next;
}
/*
* Try to fetch the option from the service.
*/
if (service != NULL) {
/* Try to fetch the same option but from globals */
/* but only if we are not already working with globals */
for (data = lp_ctx->globals->param_opt; data;
for (data = service->param_opt; data;
data = data->next) {
if (strwicmp(data->key, vfskey) == 0) {
talloc_free(vfskey);
@ -279,6 +270,18 @@ const char *lpcfg_get_parametric(struct loadparm_context *lp_ctx,
}
}
/*
* Fall back to fetching from the globals.
*/
data = lp_ctx->globals->param_opt;
while (data) {
if (strwicmp(data->key, vfskey) == 0) {
talloc_free(vfskey);
return data->value;
}
data = data->next;
}
talloc_free(vfskey);
return NULL;