1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-04 08:22:08 +03:00

Introduce mprLpCtx() similar to mprMemCtx() for loadparm_context used by

all EJS code.
(This used to be commit 184988866f)
This commit is contained in:
Jelmer Vernooij
2008-02-21 18:21:44 +01:00
parent 3c20b3eeba
commit e11c61bc5c
14 changed files with 45 additions and 36 deletions

View File

@ -30,6 +30,7 @@
*/ */
#include "miniMpr.h" #include "miniMpr.h"
#include "param/param.h"
/************************************ Code ************************************/ /************************************ Code ************************************/
#if !BLD_APPWEB #if !BLD_APPWEB
@ -49,6 +50,12 @@ void *mprMemCtx(void)
return mpr_ctx; return mpr_ctx;
} }
/* return the loadparm context being used for all ejs variables */
struct loadparm_context *mprLpCtx(void)
{
return global_loadparm;
}
void mprFree(void *ptr) void mprFree(void *ptr)
{ {
talloc_free(ptr); talloc_free(ptr);

View File

@ -272,6 +272,8 @@ extern int mprMemcpy(char *dest, int destMax, const char *src, int nbytes);
extern void mprSetCtx(void *ctx); extern void mprSetCtx(void *ctx);
extern void *mprMemCtx(void); extern void *mprMemCtx(void);
struct loadparm_context;
extern struct loadparm_context *mprLpCtx(void);
/* This function needs to be provided by anyone using ejs */ /* This function needs to be provided by anyone using ejs */
void ejs_exception(const char *reason); void ejs_exception(const char *reason);

View File

@ -52,7 +52,7 @@ static int ejs_net_context(MprVarHandle eid, int argc, struct MprVar **argv)
} }
ev = event_context_find(event_mem_ctx); ev = event_context_find(event_mem_ctx);
ctx = libnet_context_init(ev, global_loadparm); ctx = libnet_context_init(ev, mprLpCtx());
/* IF we generated a new event context, it will be under here, /* IF we generated a new event context, it will be under here,
* and we need it to last as long as the libnet context, so * and we need it to last as long as the libnet context, so
* make it a child */ * make it a child */
@ -68,7 +68,7 @@ static int ejs_net_context(MprVarHandle eid, int argc, struct MprVar **argv)
talloc_free(ctx); talloc_free(ctx);
return -1; return -1;
} }
cli_credentials_set_conf(creds, global_loadparm); cli_credentials_set_conf(creds, mprLpCtx());
cli_credentials_set_anonymous(creds); cli_credentials_set_anonymous(creds);
mprCreds = mprCredentials(creds); mprCreds = mprCredentials(creds);

View File

@ -111,7 +111,7 @@ static int ejs_typeof_native(MprVarHandle eid, int argc, struct MprVar **argv)
static int ejs_libinclude(int eid, int argc, char **argv) static int ejs_libinclude(int eid, int argc, char **argv)
{ {
int i, j; int i, j;
const char **js_include = lp_js_include(global_loadparm); const char **js_include = lp_js_include(mprLpCtx());
if (js_include == NULL || js_include[0] == NULL) { if (js_include == NULL || js_include[0] == NULL) {
ejsSetErrorMsg(eid, "js include path not set"); ejsSetErrorMsg(eid, "js include path not set");
@ -184,7 +184,7 @@ void smb_setup_ejs_functions(void (*exception_handler)(const char *))
smb_setup_ejs_param(); smb_setup_ejs_param();
smb_setup_ejs_literal(); smb_setup_ejs_literal();
shared_init = load_samba_modules(NULL, global_loadparm, "smbcalls"); shared_init = load_samba_modules(NULL, mprLpCtx(), "smbcalls");
run_init_functions(static_init); run_init_functions(static_init);
run_init_functions(shared_init); run_init_functions(shared_init);

View File

@ -56,14 +56,14 @@ static int ejs_doauth(MprVarHandle eid,
} else { } else {
/* Hope we can find the event context somewhere up there... */ /* Hope we can find the event context somewhere up there... */
ev = event_context_find(tmp_ctx); ev = event_context_find(tmp_ctx);
msg = messaging_client_init(tmp_ctx, lp_messaging_path(tmp_ctx, global_loadparm), msg = messaging_client_init(tmp_ctx, lp_messaging_path(tmp_ctx, mprLpCtx()),
lp_iconv_convenience(global_loadparm), ev); lp_iconv_convenience(mprLpCtx()), ev);
} }
if (auth_types) { if (auth_types) {
nt_status = auth_context_create_methods(tmp_ctx, auth_types, ev, msg, global_loadparm, &auth_context); nt_status = auth_context_create_methods(tmp_ctx, auth_types, ev, msg, mprLpCtx(), &auth_context);
} else { } else {
nt_status = auth_context_create(tmp_ctx, ev, msg, global_loadparm, &auth_context); nt_status = auth_context_create(tmp_ctx, ev, msg, mprLpCtx(), &auth_context);
} }
if (!NT_STATUS_IS_OK(nt_status)) { if (!NT_STATUS_IS_OK(nt_status)) {
mprSetPropertyValue(auth, "result", mprCreateBoolVar(false)); mprSetPropertyValue(auth, "result", mprCreateBoolVar(false));
@ -109,7 +109,7 @@ static int ejs_doauth(MprVarHandle eid,
goto done; goto done;
} }
nt_status = auth_generate_session_info(tmp_ctx, global_loadparm, server_info, &session_info); nt_status = auth_generate_session_info(tmp_ctx, mprLpCtx(), server_info, &session_info);
if (!NT_STATUS_IS_OK(nt_status)) { if (!NT_STATUS_IS_OK(nt_status)) {
mprSetPropertyValue(auth, "report", mprString("Session Info generation failed")); mprSetPropertyValue(auth, "report", mprString("Session Info generation failed"));
mprSetPropertyValue(auth, "result", mprCreateBoolVar(false)); mprSetPropertyValue(auth, "result", mprCreateBoolVar(false));
@ -222,7 +222,7 @@ static int ejs_userAuth(MprVarHandle eid, int argc, struct MprVar **argv)
static int ejs_system_session(MprVarHandle eid, int argc, struct MprVar **argv) static int ejs_system_session(MprVarHandle eid, int argc, struct MprVar **argv)
{ {
struct MprVar *obj = mprInitObject(eid, "session_info", argc, argv); struct MprVar *obj = mprInitObject(eid, "session_info", argc, argv);
struct auth_session_info *session_info = system_session(mprMemCtx(), global_loadparm); struct auth_session_info *session_info = system_session(mprMemCtx(), mprLpCtx());
if (session_info == NULL) { if (session_info == NULL) {
return -1; return -1;

View File

@ -432,23 +432,23 @@ static int ejs_tree_connect(MprVarHandle eid, int argc, char **argv)
/* Set up credentials */ /* Set up credentials */
creds = cli_credentials_init(NULL); creds = cli_credentials_init(NULL);
cli_credentials_set_conf(creds, global_loadparm); cli_credentials_set_conf(creds, mprLpCtx());
cli_credentials_parse_string(creds, argv[1], CRED_SPECIFIED); cli_credentials_parse_string(creds, argv[1], CRED_SPECIFIED);
/* Do connect */ /* Do connect */
io.in.dest_host = hostname; io.in.dest_host = hostname;
io.in.dest_ports = lp_smb_ports(global_loadparm); io.in.dest_ports = lp_smb_ports(mprLpCtx());
io.in.called_name = strupper_talloc(mem_ctx, hostname); io.in.called_name = strupper_talloc(mem_ctx, hostname);
io.in.service = sharename; io.in.service = sharename;
io.in.service_type = "?????"; io.in.service_type = "?????";
io.in.credentials = creds; io.in.credentials = creds;
io.in.fallback_to_anonymous = false; io.in.fallback_to_anonymous = false;
io.in.workgroup = lp_workgroup(global_loadparm); io.in.workgroup = lp_workgroup(mprLpCtx());
lp_smbcli_options(global_loadparm, &io.in.options); lp_smbcli_options(global_loadparm, &io.in.options);
result = smb_composite_connect(&io, mem_ctx, result = smb_composite_connect(&io, mem_ctx,
lp_resolve_context(global_loadparm), lp_resolve_context(mprLpCtx()),
NULL); NULL);
tree = io.out.tree; tree = io.out.tree;

View File

@ -36,8 +36,8 @@ static int ejs_lpServices(MprVarHandle eid, int argc, char **argv)
const char **list = NULL; const char **list = NULL;
if (argc != 0) return -1; if (argc != 0) return -1;
for (i=0;i<lp_numservices(global_loadparm);i++) { for (i=0;i<lp_numservices(mprLpCtx());i++) {
list = str_list_add(list, lp_servicename(lp_servicebynum(global_loadparm, i))); list = str_list_add(list, lp_servicename(lp_servicebynum(mprLpCtx(), i)));
} }
talloc_steal(mprMemCtx(), list); talloc_steal(mprMemCtx(), list);
mpr_Return(eid, mprList("services", list)); mpr_Return(eid, mprList("services", list));
@ -68,7 +68,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
if (argc == 2) { if (argc == 2) {
struct loadparm_service *service; struct loadparm_service *service;
/* its a share parameter */ /* its a share parameter */
service = lp_service(global_loadparm, argv[0]); service = lp_service(mprLpCtx(), argv[0]);
if (service == NULL) { if (service == NULL) {
mpr_Return(eid, mprCreateUndefinedVar()); mpr_Return(eid, mprCreateUndefinedVar());
return 0; return 0;
@ -84,7 +84,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
mpr_Return(eid, mprCreateUndefinedVar()); mpr_Return(eid, mprCreateUndefinedVar());
return 0; return 0;
} }
value = lp_get_parametric(global_loadparm, service, type, option); value = lp_get_parametric(mprLpCtx(), service, type, option);
if (value == NULL) { if (value == NULL) {
mpr_Return(eid, mprCreateUndefinedVar()); mpr_Return(eid, mprCreateUndefinedVar());
return 0; return 0;
@ -98,7 +98,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
mpr_Return(eid, mprCreateUndefinedVar()); mpr_Return(eid, mprCreateUndefinedVar());
return 0; return 0;
} }
parm_ptr = lp_parm_ptr(global_loadparm, service, parm); parm_ptr = lp_parm_ptr(mprLpCtx(), service, parm);
} else if (strchr(argv[0], ':')) { } else if (strchr(argv[0], ':')) {
/* its a global parametric option */ /* its a global parametric option */
const char *type = talloc_strndup(mprMemCtx(), const char *type = talloc_strndup(mprMemCtx(),
@ -109,7 +109,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
mpr_Return(eid, mprCreateUndefinedVar()); mpr_Return(eid, mprCreateUndefinedVar());
return 0; return 0;
} }
value = lp_get_parametric(global_loadparm, NULL, type, option); value = lp_get_parametric(mprLpCtx(), NULL, type, option);
if (value == NULL) { if (value == NULL) {
mpr_Return(eid, mprCreateUndefinedVar()); mpr_Return(eid, mprCreateUndefinedVar());
return 0; return 0;
@ -123,7 +123,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
mpr_Return(eid, mprCreateUndefinedVar()); mpr_Return(eid, mprCreateUndefinedVar());
return 0; return 0;
} }
parm_ptr = lp_parm_ptr(global_loadparm, NULL, parm); parm_ptr = lp_parm_ptr(mprLpCtx(), NULL, parm);
} }
if (parm == NULL || parm_ptr == NULL) { if (parm == NULL || parm_ptr == NULL) {
@ -166,7 +166,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
*/ */
static int ejs_lpFilename(MprVarHandle eid, int argc, char **argv) static int ejs_lpFilename(MprVarHandle eid, int argc, char **argv)
{ {
mpr_ReturnString(eid, lp_configfile(global_loadparm)); mpr_ReturnString(eid, lp_configfile(mprLpCtx()));
return 0; return 0;
} }
@ -184,7 +184,7 @@ static int ejs_lpSet(MprVarHandle eid, int argc, char **argv)
return -1; return -1;
} }
mpr_Return(eid, mprCreateBoolVar(lp_set_cmdline(global_loadparm, argv[0], argv[1]))); mpr_Return(eid, mprCreateBoolVar(lp_set_cmdline(mprLpCtx(), argv[0], argv[1])));
return 0; return 0;
} }
@ -196,9 +196,9 @@ static int ejs_lpSet(MprVarHandle eid, int argc, char **argv)
static int ejs_lpReload(MprVarHandle eid, int argc, char **argv) static int ejs_lpReload(MprVarHandle eid, int argc, char **argv)
{ {
bool ret; bool ret;
const char *filename = lp_configfile(global_loadparm); const char *filename = lp_configfile(mprLpCtx());
ret = lp_load(global_loadparm, filename); ret = lp_load(mprLpCtx(), filename);
mpr_Return(eid, mprCreateBoolVar(ret)); mpr_Return(eid, mprCreateBoolVar(ret));
return 0; return 0;
} }

View File

@ -192,7 +192,7 @@ static int ejs_creds_set_machine_account(MprVarHandle eid, int argc, struct MprV
return -1; return -1;
} }
if (NT_STATUS_IS_OK(cli_credentials_set_machine_account(creds, global_loadparm))) { if (NT_STATUS_IS_OK(cli_credentials_set_machine_account(creds, mprLpCtx()))) {
mpr_Return(eid, mprCreateBoolVar(true)); mpr_Return(eid, mprCreateBoolVar(true));
} else { } else {
mpr_Return(eid, mprCreateBoolVar(false)); mpr_Return(eid, mprCreateBoolVar(false));
@ -248,7 +248,7 @@ static int ejs_credentials_init(MprVarHandle eid, int argc, struct MprVar **argv
return -1; return -1;
} }
cli_credentials_set_conf(creds, global_loadparm); cli_credentials_set_conf(creds, mprLpCtx());
return ejs_credentials_obj(obj, creds); return ejs_credentials_obj(obj, creds);
} }

View File

@ -177,7 +177,7 @@ static int ejs_regToVar(MprVarHandle eid, int argc, struct MprVar **argv)
case REG_EXPAND_SZ: { case REG_EXPAND_SZ: {
char *s; char *s;
ssize_t len; ssize_t len;
len = convert_string_talloc(mprMemCtx(), lp_iconv_convenience(global_loadparm), CH_UTF16, CH_UNIX, len = convert_string_talloc(mprMemCtx(), lp_iconv_convenience(mprLpCtx()), CH_UTF16, CH_UNIX,
blob->data, blob->length, (void **)&s); blob->data, blob->length, (void **)&s);
if (len == -1) { if (len == -1) {
ejsSetErrorMsg(eid, "regToVar invalid REG_SZ string"); ejsSetErrorMsg(eid, "regToVar invalid REG_SZ string");
@ -225,7 +225,7 @@ static int ejs_regToVar(MprVarHandle eid, int argc, struct MprVar **argv)
if (slen == 2 && b.length == 2 && SVAL(b.data, 0) == 0) { if (slen == 2 && b.length == 2 && SVAL(b.data, 0) == 0) {
break; break;
} }
len = convert_string_talloc(mprMemCtx(), lp_iconv_convenience(global_loadparm), CH_UTF16, CH_UNIX, len = convert_string_talloc(mprMemCtx(), lp_iconv_convenience(mprLpCtx()), CH_UTF16, CH_UNIX,
b.data, slen, (void **)&s); b.data, slen, (void **)&s);
if (len == -1) { if (len == -1) {
ejsSetErrorMsg(eid, "regToVar invalid REG_MULTI_SZ string"); ejsSetErrorMsg(eid, "regToVar invalid REG_MULTI_SZ string");

View File

@ -453,7 +453,7 @@ static int ejs_ldbConnect(MprVarHandle eid, int argc, char **argv)
dbfile = argv[0]; dbfile = argv[0];
ldb = ldb_wrap_connect(mprMemCtx(), global_loadparm, dbfile, ldb = ldb_wrap_connect(mprMemCtx(), mprLpCtx(), dbfile,
session_info, creds, session_info, creds,
0, (const char **)(argv+1)); 0, (const char **)(argv+1));
if (ldb == NULL) { if (ldb == NULL) {

View File

@ -70,7 +70,7 @@ static int ejs_resolve_name(MprVarHandle eid, int argc, struct MprVar **argv)
result = 0; result = 0;
nt_status = resolve_name(lp_resolve_context(global_loadparm), &name, tmp_ctx, &reply_addr, event_context_find(tmp_ctx)); nt_status = resolve_name(lp_resolve_context(mprLpCtx()), &name, tmp_ctx, &reply_addr, event_context_find(tmp_ctx));
if (NT_STATUS_IS_OK(nt_status)) { if (NT_STATUS_IS_OK(nt_status)) {
mprSetPropertyValue(argv[0], "value", mprString(reply_addr)); mprSetPropertyValue(argv[0], "value", mprString(reply_addr));

View File

@ -70,7 +70,7 @@ static int ejs_reg_open(MprVarHandle eid, int argc, struct MprVar **argv)
struct registry_context *rctx; struct registry_context *rctx;
WERROR error; WERROR error;
error = reg_open_samba(mprMemCtx(), &rctx, global_loadparm, NULL, NULL); error = reg_open_samba(mprMemCtx(), &rctx, mprLpCtx(), NULL, NULL);
SMB_ASSERT(W_ERROR_IS_OK(error)); SMB_ASSERT(W_ERROR_IS_OK(error));
mprSetPtrChild(reg, "registry", rctx); mprSetPtrChild(reg, "registry", rctx);

View File

@ -79,9 +79,9 @@ static int ejs_irpc_connect(MprVarHandle eid, int argc, char **argv)
allocate temporary server ids automatically */ allocate temporary server ids automatically */
for (i=0;i<10000;i++) { for (i=0;i<10000;i++) {
p->msg_ctx = messaging_init(p, p->msg_ctx = messaging_init(p,
lp_messaging_path(p, global_loadparm), lp_messaging_path(p, mprLpCtx()),
cluster_id(EJS_ID_BASE, i), cluster_id(EJS_ID_BASE, i),
lp_iconv_convenience(global_loadparm), lp_iconv_convenience(mprLpCtx()),
ev); ev);
if (p->msg_ctx) break; if (p->msg_ctx) break;
} }
@ -161,7 +161,7 @@ static int ejs_rpc_connect(MprVarHandle eid, int argc, char **argv)
ev = event_context_find(mprMemCtx()); ev = event_context_find(mprMemCtx());
status = dcerpc_pipe_connect(this, &p, binding, iface, creds, ev, status = dcerpc_pipe_connect(this, &p, binding, iface, creds, ev,
global_loadparm); mprLpCtx());
if (!NT_STATUS_IS_OK(status)) goto done; if (!NT_STATUS_IS_OK(status)) goto done;
/* callers don't allocate ref vars in the ejs interface */ /* callers don't allocate ref vars in the ejs interface */

View File

@ -36,7 +36,7 @@ static int ejs_sys_interfaces(MprVarHandle eid, int argc, struct MprVar **argv)
struct MprVar ret = mprArray("interfaces"); struct MprVar ret = mprArray("interfaces");
struct interface *ifaces; struct interface *ifaces;
load_interfaces(NULL, lp_interfaces(global_loadparm), &ifaces); load_interfaces(NULL, lp_interfaces(mprLpCtx()), &ifaces);
count = iface_count(ifaces); count = iface_count(ifaces);
for (i=0;i<count;i++) { for (i=0;i<count;i++) {