summaryrefslogtreecommitdiffstats
path: root/pigeonhole/src/lib-sieve/plugins/mime/ext-mime-common.h
blob: 8b0054d565be8a0110a1c16dbc82a48f4fedd68d (plain)
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
#ifndef EXT_FOREVERYPART_COMMON_H
#define EXT_FOREVERYPART_COMMON_H

#include "sieve-message.h"

/*
 * Extension
 */

struct ext_extracttext_context {
	const struct sieve_extension *var_ext;
	const struct sieve_extension *fep_ext;
};

extern const struct sieve_extension_def foreverypart_extension;
extern const struct sieve_extension_def mime_extension;
extern const struct sieve_extension_def extracttext_extension;

/*
 * Tagged arguments
 */

extern const struct sieve_argument_def mime_tag;
extern const struct sieve_argument_def mime_anychild_tag;
extern const struct sieve_argument_def mime_type_tag;
extern const struct sieve_argument_def mime_subtype_tag;
extern const struct sieve_argument_def mime_contenttype_tag;
extern const struct sieve_argument_def mime_param_tag;

/*
 * Commands
 */

struct ext_foreverypart_loop {
	const char *name;
	struct sieve_jumplist *exit_jumps;
};

extern const struct sieve_command_def cmd_foreverypart;
extern const struct sieve_command_def cmd_break;
extern const struct sieve_command_def cmd_extracttext;

/*
 * Operations
 */

extern const struct sieve_operation_def foreverypart_begin_operation;
extern const struct sieve_operation_def foreverypart_end_operation;
extern const struct sieve_operation_def break_operation;
extern const struct sieve_operation_def extracttext_operation;

enum ext_foreverypart_opcode {
	EXT_FOREVERYPART_OPERATION_FOREVERYPART_BEGIN,
	EXT_FOREVERYPART_OPERATION_FOREVERYPART_END,
	EXT_FOREVERYPART_OPERATION_BREAK,
};

/*
 * Operands
 */

enum ext_mime_option {
	EXT_MIME_OPTION_NONE = 0,
	EXT_MIME_OPTION_TYPE,
	EXT_MIME_OPTION_SUBTYPE,
	EXT_MIME_OPTION_CONTENTTYPE,
	EXT_MIME_OPTION_PARAM
};

extern const struct sieve_operand_def mime_operand;

/*
 * Foreverypart loop
 */

struct ext_foreverypart_runtime_loop {
	struct sieve_message_part_iter part_iter;
	struct sieve_message_part *part;
};

struct ext_foreverypart_runtime_loop *
ext_foreverypart_runtime_loop_get_current
(const struct sieve_runtime_env *renv);

#endif