From dd7e5ed88c48f4ee39e53be07c8839791e914e45 Mon Sep 17 00:00:00 2001
From: Jelmer Vernooij <jelmer@samba.org>
Date: Sat, 8 Dec 2007 23:32:37 +0100
Subject: r26352: Don't make lp_load create a new context. (This used to be
 commit d0d5c1a823a6601292c061dba2b6f4bde2b9e3dd)

---
 source4/scripting/ejs/smbcalls_config.c | 14 ++++++++++++--
 source4/scripting/ejs/smbscript.c       |  6 ++++--
 2 files changed, 16 insertions(+), 4 deletions(-)

(limited to 'source4/scripting/ejs')

diff --git a/source4/scripting/ejs/smbcalls_config.c b/source4/scripting/ejs/smbcalls_config.c
index 157587186c..88c153ead3 100644
--- a/source4/scripting/ejs/smbcalls_config.c
+++ b/source4/scripting/ejs/smbcalls_config.c
@@ -161,6 +161,14 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
 	return 0;
 }
 
+/*
+    v = lp.filename();         obtain filename
+*/
+static int ejs_lpFilename(MprVarHandle eid, int argc, char **argv)
+{
+	mpr_ReturnString(eid, lp_configfile(global_loadparm));
+	return 0;
+}
 
 /*
   set a smb.conf parameter. Only sets in memory, not permanent
@@ -188,8 +196,9 @@ static int ejs_lpSet(MprVarHandle eid, int argc, char **argv)
 static int ejs_lpReload(MprVarHandle eid, int argc, char **argv)
 {
 	bool ret;
-	
-	ret = lp_load(talloc_autofree_context(), lp_configfile(global_loadparm), NULL);
+	const char *filename = lp_configfile(global_loadparm);
+
+	ret = lp_load(global_loadparm, filename);
 	if (ret) {
 		unload_interfaces();
 	}
@@ -208,6 +217,7 @@ static int ejs_loadparm_init(MprVarHandle eid, int argc, struct MprVar **argv)
 	mprSetStringCFunction(obj, "set", ejs_lpSet);
 	mprSetStringCFunction(obj, "reload", ejs_lpReload);
 	mprSetStringCFunction(obj, "services", ejs_lpServices);
+	mprSetStringCFunction(obj, "filename", ejs_lpFilename);
 	return 0;
 }
 
diff --git a/source4/scripting/ejs/smbscript.c b/source4/scripting/ejs/smbscript.c
index e00d52589a..a4f2e1cd43 100644
--- a/source4/scripting/ejs/smbscript.c
+++ b/source4/scripting/ejs/smbscript.c
@@ -53,10 +53,12 @@ int main(int argc, const char **argv)
 
 	fault_setup(argv[0]);
 
+	global_loadparm = lp_ctx = loadparm_init(talloc_autofree_context());
+
 	if (getenv("SMB_CONF_PATH")) {
-		lp_load(talloc_autofree_context(), getenv("SMB_CONF_PATH"), &lp_ctx);
+		lp_load(lp_ctx, getenv("SMB_CONF_PATH"));
 	} else {
-		lp_load(talloc_autofree_context(), dyn_CONFIGFILE, &lp_ctx);
+		lp_load(lp_ctx, dyn_CONFIGFILE);
 	}
 
 	ldb_global_init();
-- 
cgit