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; }
static int testsuite_run (struct sieve_binary *sbin, const struct sieve_message_data *msgdata, const struct sieve_script_env *senv, struct sieve_error_handler *ehandler) { struct sieve_interpreter *interp; struct sieve_result *result; int ret = 0; /* Create the interpreter */ if ( (interp=sieve_interpreter_create(sbin, msgdata, senv, ehandler)) == NULL ) return SIEVE_EXEC_BIN_CORRUPT; /* Run the interpreter */ result = testsuite_result_get(); sieve_result_ref(result); ret = sieve_interpreter_run(interp, result); sieve_result_unref(&result); /* Free the interpreter */ sieve_interpreter_free(&interp); return ret; }