File: sieve-match.h

package info (click to toggle)
dovecot 1:2.2.13-12~deb8u4
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 38,792 kB
  • sloc: ansic: 341,472; sh: 16,920; makefile: 5,393; cpp: 1,474; perl: 265; xml: 44; python: 34; pascal: 27
file content (71 lines) | stat: -rw-r--r-- 1,692 bytes parent folder | download | duplicates (3)
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
/* Copyright (c) 2002-2013 Pigeonhole authors, see the included COPYING file
 */

#ifndef __SIEVE_MATCH_H
#define __SIEVE_MATCH_H

#include "sieve-common.h"

/*
 * Matching context
 */

struct sieve_match_context {
	pool_t pool;

	const struct sieve_runtime_env *runenv;

	const struct sieve_match_type *match_type;
	const struct sieve_comparator *comparator;

	void *data;

	int match_status;
	int exec_status;

	unsigned int trace:1;
};

/*
 * Matching implementation
 */

/* Manual value iteration (for when multiple matches are allowed) */
struct sieve_match_context *sieve_match_begin
	(const struct sieve_runtime_env *renv,
		const struct sieve_match_type *mcht,
		const struct sieve_comparator *cmp);
int sieve_match_value
	(struct sieve_match_context *mctx, const char *value, size_t value_size,
		struct sieve_stringlist *key_list);
int sieve_match_end(struct sieve_match_context **mctx, int *exec_status);

/* Default matching operation */
int sieve_match
	(const struct sieve_runtime_env *renv,
		const struct sieve_match_type *mcht,
		const struct sieve_comparator *cmp,
		struct sieve_stringlist *value_list,
		struct sieve_stringlist *key_list,
		int *exec_status);

/*
 * Read matching operands
 */

enum sieve_match_opt_operand {
	SIEVE_MATCH_OPT_END,
	SIEVE_MATCH_OPT_COMPARATOR,
	SIEVE_MATCH_OPT_MATCH_TYPE,
	SIEVE_MATCH_OPT_LAST
};

int sieve_match_opr_optional_dump
	(const struct sieve_dumptime_env *denv, sieve_size_t *addres, int *opt_code);

int sieve_match_opr_optional_read
	(const struct sieve_runtime_env *renv, sieve_size_t *address, int *opt_code,
		int *exec_status, struct sieve_comparator *cmp,
		struct sieve_match_type *mcht);

#endif /* __SIEVE_MATCH_H */