Introduce mprLpCtx() similar to mprMemCtx() for loadparm_context used by
authorJelmer Vernooij <jelmer@samba.org>
Thu, 21 Feb 2008 17:21:44 +0000 (18:21 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Thu, 21 Feb 2008 17:21:44 +0000 (18:21 +0100)
all EJS code.

14 files changed:
source/lib/appweb/mpr/miniMpr.c
source/lib/appweb/mpr/miniMpr.h
source/scripting/ejs/ejsnet/net_ctx.c
source/scripting/ejs/smbcalls.c
source/scripting/ejs/smbcalls_auth.c
source/scripting/ejs/smbcalls_cli.c
source/scripting/ejs/smbcalls_config.c
source/scripting/ejs/smbcalls_creds.c
source/scripting/ejs/smbcalls_data.c
source/scripting/ejs/smbcalls_ldb.c
source/scripting/ejs/smbcalls_nbt.c
source/scripting/ejs/smbcalls_reg.c
source/scripting/ejs/smbcalls_rpc.c
source/scripting/ejs/smbcalls_sys.c

index 949d64fcf11f0ed3751e7d01d3c19fecff0e9138..52b23608aa7e403846355e4be88c67c2b747f35b 100644 (file)
@@ -30,6 +30,7 @@
  */
 
 #include       "miniMpr.h"
+#include "param/param.h"
 
 /************************************ Code ************************************/
 #if !BLD_APPWEB
@@ -49,6 +50,12 @@ void *mprMemCtx(void)
        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)
 {
        talloc_free(ptr);
index 836fdab9f216ad81879bd7fb534e4a109c4b1cb8..15ce30c8df9d52eef3d723ee41d888fe197465dc 100644 (file)
@@ -272,6 +272,8 @@ extern int          mprMemcpy(char *dest, int destMax, const char *src, int nbytes);
 
 extern void mprSetCtx(void *ctx);
 extern void *mprMemCtx(void);
+struct loadparm_context;
+extern struct loadparm_context *mprLpCtx(void);
 
 /* This function needs to be provided by anyone using ejs */
 void ejs_exception(const char *reason);
index 396718367ac1315106a1d3b1b7fee9a7396a171e..99be1c4ef8e10166c19a8972c6ea82e795bedbe6 100644 (file)
@@ -52,7 +52,7 @@ static int ejs_net_context(MprVarHandle eid, int argc, struct MprVar **argv)
        }
        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,
         * and we need it to last as long as the libnet context, so
         * make it a child */
@@ -68,7 +68,7 @@ static int ejs_net_context(MprVarHandle eid, int argc, struct MprVar **argv)
                        talloc_free(ctx);
                        return -1;
                }
-               cli_credentials_set_conf(creds, global_loadparm);
+               cli_credentials_set_conf(creds, mprLpCtx());
                cli_credentials_set_anonymous(creds);
 
                mprCreds = mprCredentials(creds);
index 1f29fce00249e6bd1e18c32a052a6198c5c3837a..63a80e17db65a85fce6a17bba418f1f66538f5ee 100644 (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)
 {
        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) {
                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_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(shared_init);
index 89370890c8899b66e3bc3806770f858ecf862460..908a009159a09c4a0d118b3ba9401308c04d3940 100644 (file)
@@ -56,14 +56,14 @@ static int ejs_doauth(MprVarHandle eid,
        } else {
                /* Hope we can find the event context somewhere up there... */
                ev = event_context_find(tmp_ctx);
-               msg = messaging_client_init(tmp_ctx, lp_messaging_path(tmp_ctx, global_loadparm), 
-                                           lp_iconv_convenience(global_loadparm), ev);
+               msg = messaging_client_init(tmp_ctx, lp_messaging_path(tmp_ctx, mprLpCtx()), 
+                                           lp_iconv_convenience(mprLpCtx()), ev);
        }
 
        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 {
-               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)) {
                mprSetPropertyValue(auth, "result", mprCreateBoolVar(false));
@@ -109,7 +109,7 @@ static int ejs_doauth(MprVarHandle eid,
                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)) {
                mprSetPropertyValue(auth, "report", mprString("Session Info generation failed"));
                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)
 {
        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) {
                return -1;
index 8295a0879fd462a60715a668e355a293fcb6f518..4f2d52b25ccef7649e5a0a816843898a0da702e3 100644 (file)
@@ -432,23 +432,23 @@ static int ejs_tree_connect(MprVarHandle eid, int argc, char **argv)
        /* Set up credentials */
 
        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);
 
        /* Do connect */
 
        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.service                = sharename;
        io.in.service_type           = "?????";
        io.in.credentials            = creds;
        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);
 
        result = smb_composite_connect(&io, mem_ctx, 
-                                      lp_resolve_context(global_loadparm), 
+                                      lp_resolve_context(mprLpCtx()), 
                                       NULL);
        tree = io.out.tree;
 
index 07e0f479daea07e16e52565d6012e7e2c3022fa7..eb673b3a2380452bacf306a7b4da9608426a1490 100644 (file)
@@ -36,8 +36,8 @@ static int ejs_lpServices(MprVarHandle eid, int argc, char **argv)
        const char **list = NULL;
        if (argc != 0) return -1;
        
-       for (i=0;i<lp_numservices(global_loadparm);i++) {
-               list = str_list_add(list, lp_servicename(lp_servicebynum(global_loadparm, i)));
+       for (i=0;i<lp_numservices(mprLpCtx());i++) {
+               list = str_list_add(list, lp_servicename(lp_servicebynum(mprLpCtx(), i)));
        }
        talloc_steal(mprMemCtx(), list);
        mpr_Return(eid, mprList("services", list));
@@ -68,7 +68,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
        if (argc == 2) {
                struct loadparm_service *service;
                /* its a share parameter */
-               service = lp_service(global_loadparm, argv[0]);
+               service = lp_service(mprLpCtx(), argv[0]);
                if (service == NULL) {
                        mpr_Return(eid, mprCreateUndefinedVar());
                        return 0;
@@ -84,7 +84,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
                                mpr_Return(eid, mprCreateUndefinedVar());
                                return 0;
                        }
-                       value = lp_get_parametric(global_loadparm, service, type, option);
+                       value = lp_get_parametric(mprLpCtx(), service, type, option);
                        if (value == NULL) {
                                mpr_Return(eid, mprCreateUndefinedVar());
                                return 0;
@@ -98,7 +98,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
                        mpr_Return(eid, mprCreateUndefinedVar());
                        return 0;
                }
-               parm_ptr = lp_parm_ptr(global_loadparm, service, parm);
+               parm_ptr = lp_parm_ptr(mprLpCtx(), service, parm);
        } else if (strchr(argv[0], ':')) {
                /* its a global parametric option */
                const char *type = talloc_strndup(mprMemCtx(), 
@@ -109,7 +109,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
                        mpr_Return(eid, mprCreateUndefinedVar());
                        return 0;
                }
-               value = lp_get_parametric(global_loadparm, NULL, type, option);
+               value = lp_get_parametric(mprLpCtx(), NULL, type, option);
                if (value == NULL) {
                        mpr_Return(eid, mprCreateUndefinedVar());
                        return 0;
@@ -123,7 +123,7 @@ static int ejs_lpGet(MprVarHandle eid, int argc, char **argv)
                        mpr_Return(eid, mprCreateUndefinedVar());
                        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) {
@@ -166,7 +166,7 @@ static int ejs_lpGet(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;
 }
 
@@ -184,7 +184,7 @@ static int ejs_lpSet(MprVarHandle eid, int argc, char **argv)
                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;
 }
 
@@ -196,9 +196,9 @@ static int ejs_lpSet(MprVarHandle eid, int argc, char **argv)
 static int ejs_lpReload(MprVarHandle eid, int argc, char **argv)
 {
        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));
        return 0;
 }
index 6dfff8f925ca48ae37e9f008f71a731545843e3b..fd73f0751fa0efc30254b051ffa654aaca63e6ff 100644 (file)
@@ -192,7 +192,7 @@ static int ejs_creds_set_machine_account(MprVarHandle eid, int argc, struct MprV
                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));
        } else {
                mpr_Return(eid, mprCreateBoolVar(false));
@@ -248,7 +248,7 @@ static int ejs_credentials_init(MprVarHandle eid, int argc, struct MprVar **argv
                return -1;
        }
 
-       cli_credentials_set_conf(creds, global_loadparm);
+       cli_credentials_set_conf(creds, mprLpCtx());
 
        return ejs_credentials_obj(obj, creds);
 }
index 3ea41d46fb4d3038d100815f68d991ce039afe51..19e1e173d605231c99af9c9898ca24f582f0d7be 100644 (file)
@@ -177,7 +177,7 @@ static int ejs_regToVar(MprVarHandle eid, int argc, struct MprVar **argv)
        case REG_EXPAND_SZ: {
                char *s;
                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);
                if (len == -1) {
                        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) {
                                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);
                        if (len == -1) {
                                ejsSetErrorMsg(eid, "regToVar invalid REG_MULTI_SZ string");
index 7599cbf4433ee31acb3613b7033dd0865eb9597b..f47920b9bb5fd04d306c40ff88fc7ddcfd625f84 100644 (file)
@@ -453,7 +453,7 @@ static int ejs_ldbConnect(MprVarHandle eid, int argc, char **argv)
 
        dbfile = argv[0];
 
-       ldb = ldb_wrap_connect(mprMemCtx(), global_loadparm, dbfile, 
+       ldb = ldb_wrap_connect(mprMemCtx(), mprLpCtx(), dbfile, 
                               session_info, creds,
                               0, (const char **)(argv+1));
        if (ldb == NULL) {
index c3679b1ec78b86fe06a798abfb5aa30c7143ba31..67a85414caf718fbf110c6203531487688e32da2 100644 (file)
@@ -70,7 +70,7 @@ static int ejs_resolve_name(MprVarHandle eid, int argc, struct MprVar **argv)
 
        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)) {
                mprSetPropertyValue(argv[0], "value", mprString(reply_addr));
index 30e5357cfba5390562e16ccf5ff96a796413fae4..e20d91ad2eeef7b5dec0566a6f4f78b4cdcd7711 100644 (file)
@@ -70,7 +70,7 @@ static int ejs_reg_open(MprVarHandle eid, int argc, struct MprVar **argv)
        struct registry_context *rctx;
        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));
 
        mprSetPtrChild(reg, "registry", rctx);
index 44cfa16d7e875b78a51c0d54450b89ac46989236..d1e49b4348a97823eab5fc498e4ada7c17a07c3c 100644 (file)
@@ -79,9 +79,9 @@ static int ejs_irpc_connect(MprVarHandle eid, int argc, char **argv)
           allocate temporary server ids automatically */
        for (i=0;i<10000;i++) {
                p->msg_ctx = messaging_init(p, 
-                                           lp_messaging_path(p, global_loadparm),
+                                           lp_messaging_path(p, mprLpCtx()),
                                            cluster_id(EJS_ID_BASE, i), 
-                                           lp_iconv_convenience(global_loadparm),
+                                           lp_iconv_convenience(mprLpCtx()),
                                            ev);
                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());
 
        status = dcerpc_pipe_connect(this, &p, binding, iface, creds, ev,
-                                    global_loadparm);
+                                    mprLpCtx());
        if (!NT_STATUS_IS_OK(status)) goto done;
 
        /* callers don't allocate ref vars in the ejs interface */
index 72ddf90231c5272217966b500b64d23e2d8b39c9..00599a55bc70211dcc0619b95e2110e355009790 100644 (file)
@@ -36,7 +36,7 @@ static int ejs_sys_interfaces(MprVarHandle eid, int argc, struct MprVar **argv)
        struct MprVar ret = mprArray("interfaces");
        struct interface *ifaces;
 
-       load_interfaces(NULL, lp_interfaces(global_loadparm), &ifaces);
+       load_interfaces(NULL, lp_interfaces(mprLpCtx()), &ifaces);
 
        count = iface_count(ifaces);
        for (i=0;i<count;i++) {