/* turn a MprVar integer variable into an int */ int mprToInt(struct MprVar *v) { if (v->trigger) { mprReadProperty(v, 0); } if (!mprVarIsNumber(v->type)) return 0; return mprVarToNumber(v); }
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; }