/* used by object xxx_init() routines to allow for the caller to supply a pre-existing object to add properties to, or create a new object. This makes inheritance easy */ struct MprVar *mprInitObject(int eid, const char *name, int argc, struct MprVar **argv) { if (argc > 0 && mprVarIsObject(argv[0]->type)) { return argv[0]; } mpr_Return(eid, mprObject(name)); return ejsGetReturnValue(eid); }
static int test_run_ejs(char *script) { EjsHandle handle = 0; MprVar result; char *emsg; TALLOC_CTX *mem_ctx = talloc_new(NULL); struct MprVar *return_var; mprSetCtx(mem_ctx); if (ejsOpen(NULL, NULL, NULL) != 0) { d_printf("ejsOpen(): unable to initialise EJS subsystem\n"); ejs_error = 127; goto failed; } smb_setup_ejs_functions(test_ejs_exception); if ((eid = ejsOpenEngine(handle, 0)) == (EjsId)-1) { d_printf("smbscript: ejsOpenEngine(): unable to initialise an EJS engine\n"); ejs_error = 127; goto failed; } mprSetVar(ejsGetGlobalObject(eid), "ARGV", mprList("ARGV", NULL)); /* run the script */ if (ejsEvalScript(eid, script, &result, &emsg) == -1) { d_printf("smbscript: ejsEvalScript(): %s\n", emsg); if (ejs_error == 0) ejs_error = 127; goto failed; } return_var = ejsGetReturnValue(eid); ejs_error = mprVarToNumber(return_var); failed: ejsClose(); talloc_free(mem_ctx); return ejs_error; }
MprVar *espGetResult(EspRequest *ep) { mprAssert(ep); return ejsGetReturnValue(ep->eid); }