diff options
author | Garming Sam <garming@catalyst.net.nz> | 2014-03-20 14:38:37 +1300 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-07-31 08:17:10 +0200 |
commit | 0864d4945e3c6a4b61cf54250ecb98a7844ee128 (patch) | |
tree | 74996253bb4361e9560eba275f8d63ba27869240 /source3/param | |
parent | 622e54fc494e56d32ffe6193e9c83452c816f7d0 (diff) | |
download | samba-0864d4945e3c6a4b61cf54250ecb98a7844ee128.tar.gz samba-0864d4945e3c6a4b61cf54250ecb98a7844ee128.tar.xz samba-0864d4945e3c6a4b61cf54250ecb98a7844ee128.zip |
s3:param: use lpcfg_do_*_paramter instead of lp_do_parameter in do_parameter
Change-Id: I08ab5d9db9323a2ef4fa2243ff0b0b7efe73a23b
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3/param')
-rw-r--r-- | source3/param/loadparm.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 11a10d9b22..97e2ed1809 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -2674,8 +2674,12 @@ static bool do_parameter(const char *pszParmName, const char *pszParmValue, DEBUGADD(4, ("doing parameter %s = %s\n", pszParmName, pszParmValue)); - return (lp_do_parameter(bInGlobalSection ? -2 : iServiceIndex, - pszParmName, pszParmValue)); + if (bInGlobalSection) { + return lpcfg_do_global_parameter(userdata, pszParmName, pszParmValue); + } else { + return lpcfg_do_service_parameter(userdata, ServicePtrs[iServiceIndex], + pszParmName, pszParmValue); + } } /*************************************************************************** @@ -2723,6 +2727,7 @@ static void init_locals(void) bool lp_do_section(const char *pszSectionName, void *userdata) { + struct loadparm_context *lp_ctx = (struct loadparm_context *)userdata; bool bRetval; bool isglobal = ((strwicmp(pszSectionName, GLOBAL_NAME) == 0) || (strwicmp(pszSectionName, GLOBAL_NAME2) == 0)); @@ -2734,6 +2739,7 @@ bool lp_do_section(const char *pszSectionName, void *userdata) /* if we've just struck a global section, note the fact. */ bInGlobalSection = isglobal; + lp_ctx->bInGlobalSection = isglobal; /* check for multiple global sections */ if (bInGlobalSection) { @@ -3877,6 +3883,7 @@ static bool lp_load_ex(const char *pszFname, char *n2 = NULL; bool bRetval; TALLOC_CTX *frame = talloc_stackframe(); + struct loadparm_context *lp_ctx; bRetval = false; @@ -3886,6 +3893,12 @@ static bool lp_load_ex(const char *pszFname, bGlobalOnly = global_only; bAllowIncludeRegistry = allow_include_registry; + lp_ctx = loadparm_init_s3(talloc_tos(), + loadparm_s3_helpers()); + + lp_ctx->sDefault = &sDefault; + lp_ctx->bInGlobalSection = bInGlobalSection; + init_globals(initialize_globals); free_file_list(); @@ -3915,7 +3928,7 @@ static bool lp_load_ex(const char *pszFname, add_to_file_list(NULL, &file_lists, pszFname, n2); - bRetval = pm_process(n2, lp_do_section, do_parameter, NULL); + bRetval = pm_process(n2, lp_do_section, do_parameter, lp_ctx); TALLOC_FREE(n2); /* finish up the last section */ @@ -3935,6 +3948,8 @@ static bool lp_load_ex(const char *pszFname, * for config_backend. Otherwise, init_globals would * send us into an endless loop here. */ + TALLOC_FREE(lp_ctx); + config_backend = CONFIG_BACKEND_REGISTRY; /* start over */ DEBUG(1, ("lp_load_ex: changing to config backend " |