static int sieve_run (struct sieve_binary *sbin, struct sieve_result **result, const struct sieve_message_data *msgdata, const struct sieve_script_env *senv, struct sieve_error_handler *ehandler, enum sieve_runtime_flags flags) { struct sieve_interpreter *interp; int ret = 0; /* Create the interpreter */ if ( (interp=sieve_interpreter_create (sbin, NULL, msgdata, senv, ehandler, flags)) == NULL ) return SIEVE_EXEC_BIN_CORRUPT; /* Reset execution status */ if ( senv->exec_status != NULL ) memset(senv->exec_status, 0, sizeof(*senv->exec_status)); /* Create result object */ if ( *result == NULL ) { *result = sieve_result_create (sieve_binary_svinst(sbin), msgdata, senv); } /* Run the interpreter */ ret = sieve_interpreter_run(interp, *result); /* Free the interpreter */ sieve_interpreter_free(&interp); return ret; }
void testsuite_result_init(void) { struct sieve_instance *svinst = testsuite_sieve_instance; _testsuite_result = sieve_result_create (svinst, &testsuite_msgdata, testsuite_scriptenv, testsuite_log_ehandler); }
void testsuite_result_reset (const struct sieve_runtime_env *renv) { struct sieve_instance *svinst = testsuite_sieve_instance; if ( _testsuite_result != NULL ) { sieve_result_unref(&_testsuite_result); } _testsuite_result = sieve_result_create (svinst, &testsuite_msgdata, testsuite_scriptenv, testsuite_log_ehandler); sieve_interpreter_set_result(renv->interp, _testsuite_result); }
struct sieve_multiscript *sieve_multiscript_start_execute (struct sieve_instance *svinst, const struct sieve_message_data *msgdata, const struct sieve_script_env *senv) { pool_t pool; struct sieve_result *result; struct sieve_multiscript *mscript; result = sieve_result_create(svinst, msgdata, senv); pool = sieve_result_pool(result); sieve_result_set_keep_action(result, NULL, NULL); mscript = p_new(pool, struct sieve_multiscript, 1); mscript->svinst = svinst; mscript->result = result; mscript->msgdata = msgdata; mscript->scriptenv = senv; mscript->status = SIEVE_EXEC_OK; mscript->active = TRUE; mscript->keep = TRUE; return mscript; }