summaryrefslogtreecommitdiffstats
path: root/source3/param
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2014-03-20 14:38:37 +1300
committerMichael Adam <obnox@samba.org>2014-07-31 08:17:10 +0200
commit0864d4945e3c6a4b61cf54250ecb98a7844ee128 (patch)
tree74996253bb4361e9560eba275f8d63ba27869240 /source3/param
parent622e54fc494e56d32ffe6193e9c83452c816f7d0 (diff)
downloadsamba-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.c21
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 "