/usr/include/dovecot/sieve/sieve-interpreter.h is in dovecot-dev 1:2.2.9-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | /* Copyright (c) 2002-2013 Pigeonhole authors, see the included COPYING file
*/
#ifndef __SIEVE_INTERPRETER_H
#define __SIEVE_INTERPRETER_H
#include "lib.h"
#include "array.h"
#include "buffer.h"
#include "mail-storage.h"
#include "sieve-common.h"
#include "sieve-runtime.h"
/*
* Interpreter
*/
struct sieve_interpreter *sieve_interpreter_create
(struct sieve_binary *sbin, 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 *sieve_interpreter_create_for_block
(struct sieve_binary_block *sblock, struct sieve_script *script,
const struct sieve_message_data *msgdata,
const struct sieve_script_env *senv, struct sieve_error_handler *ehandler,
enum sieve_runtime_flags flags);
void sieve_interpreter_free(struct sieve_interpreter **interp);
/*
* Accessors
*/
pool_t sieve_interpreter_pool
(struct sieve_interpreter *interp);
struct sieve_script *sieve_interpreter_script
(struct sieve_interpreter *interp);
struct sieve_error_handler *sieve_interpreter_get_error_handler
(struct sieve_interpreter *interp);
struct sieve_instance *sieve_interpreter_svinst
(struct sieve_interpreter *interp);
/* Do not use this function for normal sieve extensions. This is intended for
* the testsuite only.
*/
void sieve_interpreter_set_result
(struct sieve_interpreter *interp, struct sieve_result *result);
/*
* Program flow
*/
void sieve_interpreter_reset
(struct sieve_interpreter *interp);
void sieve_interpreter_interrupt
(struct sieve_interpreter *interp);
sieve_size_t sieve_interpreter_program_counter
(struct sieve_interpreter *interp);
int sieve_interpreter_program_jump
(struct sieve_interpreter *interp, bool jump);
/*
* Test results
*/
void sieve_interpreter_set_test_result
(struct sieve_interpreter *interp, bool result);
bool sieve_interpreter_get_test_result
(struct sieve_interpreter *interp);
/*
* Source location
*/
unsigned int sieve_runtime_get_source_location
(const struct sieve_runtime_env *renv, sieve_size_t code_address);
unsigned int sieve_runtime_get_command_location
(const struct sieve_runtime_env *renv);
const char *sieve_runtime_get_full_command_location
(const struct sieve_runtime_env *renv);
/*
* Error handling
*/
void sieve_runtime_error
(const struct sieve_runtime_env *renv, const char *location,
const char *fmt, ...) ATTR_FORMAT(3, 4);
void sieve_runtime_warning
(const struct sieve_runtime_env *renv, const char *location,
const char *fmt, ...) ATTR_FORMAT(3, 4);
void sieve_runtime_log
(const struct sieve_runtime_env *renv, const char *location,
const char *fmt, ...) ATTR_FORMAT(3, 4);
void sieve_runtime_critical
(const struct sieve_runtime_env *renv, const char *location,
const char *user_prefix, const char *fmt, ...) ATTR_FORMAT(4, 5);
/*
* Extension support
*/
struct sieve_interpreter_extension {
const struct sieve_extension_def *ext_def;
void (*run)
(const struct sieve_extension *ext, const struct sieve_runtime_env *renv,
void *context);
void (*free)
(const struct sieve_extension *ext, struct sieve_interpreter *interp,
void *context);
};
void sieve_interpreter_extension_register
(struct sieve_interpreter *interp, const struct sieve_extension *ext,
const struct sieve_interpreter_extension *intext, void *context);
void sieve_interpreter_extension_set_context
(struct sieve_interpreter *interp, const struct sieve_extension *ext,
void *context);
void *sieve_interpreter_extension_get_context
(struct sieve_interpreter *interp, const struct sieve_extension *ext);
/*
* Opcodes and operands
*/
int sieve_interpreter_handle_optional_operands
(const struct sieve_runtime_env *renv, sieve_size_t *address,
struct sieve_side_effects_list **list);
/*
* Code execute
*/
int sieve_interpreter_continue
(struct sieve_interpreter *interp, bool *interrupted);
int sieve_interpreter_start
(struct sieve_interpreter *interp, struct sieve_result *result,
bool *interrupted);
int sieve_interpreter_run
(struct sieve_interpreter *interp, struct sieve_result *result);
#endif /* __SIEVE_INTERPRETER_H */
|