dovecot-2.2-pigeonhole: lib-sieve: imap4flags extension: Made fl...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Sat Nov 7 11:43:07 UTC 2015
details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/334f0ba2fd9b
changeset: 2129:334f0ba2fd9b
user: Stephan Bosch <stephan at rename-it.nl>
date: Mon Nov 02 18:56:39 2015 +0100
description:
lib-sieve: imap4flags extension: Made flag manipulation API available to other extensions.
diffstat:
src/lib-sieve/plugins/imap4flags/Makefile.am | 8 ++-
src/lib-sieve/plugins/imap4flags/cmd-flag.c | 6 +-
src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c | 35 +++++++----
src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.h | 21 +----
src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h | 50 ++++++++++++++++
src/lib-sieve/plugins/imap4flags/tst-hasflag.c | 4 +-
6 files changed, 90 insertions(+), 34 deletions(-)
diffs (229 lines):
diff -r a146b20160f6 -r 334f0ba2fd9b src/lib-sieve/plugins/imap4flags/Makefile.am
--- a/src/lib-sieve/plugins/imap4flags/Makefile.am Mon Nov 02 18:56:39 2015 +0100
+++ b/src/lib-sieve/plugins/imap4flags/Makefile.am Mon Nov 02 18:56:39 2015 +0100
@@ -22,6 +22,12 @@
ext-imap4flags.c \
ext-imapflags.c
+public_headers = \
+ sieve-ext-imap4flags.h
-noinst_HEADERS = \
+headers = \
ext-imap4flags-common.h
+
+pkginc_libdir=$(dovecot_pkgincludedir)/sieve
+pkginc_lib_HEADERS = $(public_headers)
+noinst_HEADERS = $(headers)
diff -r a146b20160f6 -r 334f0ba2fd9b src/lib-sieve/plugins/imap4flags/cmd-flag.c
--- a/src/lib-sieve/plugins/imap4flags/cmd-flag.c Mon Nov 02 18:56:39 2015 +0100
+++ b/src/lib-sieve/plugins/imap4flags/cmd-flag.c Mon Nov 02 18:56:39 2015 +0100
@@ -230,13 +230,13 @@
if ( sieve_operation_is(op, setflag_operation) ) {
sieve_runtime_trace(renv, SIEVE_TRLVL_COMMANDS, "setflag command");
- flag_op = ext_imap4flags_set_flags;
+ flag_op = sieve_ext_imap4flags_set_flags;
} else if ( sieve_operation_is(op, addflag_operation) ) {
sieve_runtime_trace(renv, SIEVE_TRLVL_COMMANDS, "addflag command");
- flag_op = ext_imap4flags_add_flags;
+ flag_op = sieve_ext_imap4flags_add_flags;
} else if ( sieve_operation_is(op, removeflag_operation) ) {
sieve_runtime_trace(renv, SIEVE_TRLVL_COMMANDS, "removeflag command");
- flag_op = ext_imap4flags_remove_flags;
+ flag_op = sieve_ext_imap4flags_remove_flags;
} else {
i_unreached();
}
diff -r a146b20160f6 -r 334f0ba2fd9b src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
--- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c Mon Nov 02 18:56:39 2015 +0100
+++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c Mon Nov 02 18:56:39 2015 +0100
@@ -404,6 +404,11 @@
/* Flag operations */
+static string_t *ext_imap4flags_get_flag_variable
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index)
+ ATTR_NULL(2);
+
static bool flags_list_flag_exists
(string_t *flags_list, const char *flag)
{
@@ -479,8 +484,8 @@
}
static string_t *ext_imap4flags_get_flag_variable
-(const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index)
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index)
{
string_t *flags;
@@ -504,9 +509,10 @@
return flags;
}
-int ext_imap4flags_set_flags
-(const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index, struct sieve_stringlist *flags)
+int sieve_ext_imap4flags_set_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index,
+ struct sieve_stringlist *flags)
{
string_t *cur_flags = ext_imap4flags_get_flag_variable
(renv, storage, var_index);
@@ -531,9 +537,10 @@
return SIEVE_EXEC_BIN_CORRUPT;
}
-int ext_imap4flags_add_flags
-(const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index, struct sieve_stringlist *flags)
+int sieve_ext_imap4flags_add_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index,
+ struct sieve_stringlist *flags)
{
string_t *cur_flags = ext_imap4flags_get_flag_variable
(renv, storage, var_index);
@@ -557,9 +564,10 @@
return SIEVE_EXEC_BIN_CORRUPT;
}
-int ext_imap4flags_remove_flags
-(const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index, struct sieve_stringlist *flags)
+int sieve_ext_imap4flags_remove_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index,
+ struct sieve_stringlist *flags)
{
string_t *cur_flags = ext_imap4flags_get_flag_variable
(renv, storage, var_index);
@@ -690,8 +698,9 @@
/* Flag access */
-struct sieve_stringlist *ext_imap4flags_get_flags
-(const struct sieve_runtime_env *renv, struct sieve_stringlist *flags_list)
+struct sieve_stringlist *sieve_ext_imap4flags_get_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_stringlist *flags_list)
{
if ( flags_list == NULL )
return ext_imap4flags_stringlist_create_single
diff -r a146b20160f6 -r 334f0ba2fd9b src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.h
--- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.h Mon Nov 02 18:56:39 2015 +0100
+++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.h Mon Nov 02 18:56:39 2015 +0100
@@ -9,6 +9,8 @@
#include "sieve-common.h"
#include "sieve-ext-variables.h"
+#include "sieve-ext-imap4flags.h"
+
/*
* Extension
*/
@@ -89,24 +91,13 @@
/* Flag operations */
typedef int (*ext_imapflag_flag_operation_t)
- (const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index, struct sieve_stringlist *flags);
-
-int ext_imap4flags_set_flags
- (const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index, struct sieve_stringlist *flags);
-int ext_imap4flags_add_flags
- (const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index, struct sieve_stringlist *flags);
-int ext_imap4flags_remove_flags
- (const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage,
- unsigned int var_index, struct sieve_stringlist *flags);
+ (const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage,
+ unsigned int var_index, struct sieve_stringlist *flags)
+ ATTR_NULL(2);
/* Flags access */
-struct sieve_stringlist *ext_imap4flags_get_flags
- (const struct sieve_runtime_env *renv, struct sieve_stringlist *flags_list);
-
void ext_imap4flags_get_implicit_flags_init
(struct ext_imap4flags_iter *iter, const struct sieve_extension *this_ext,
struct sieve_result *result);
diff -r a146b20160f6 -r 334f0ba2fd9b src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h Mon Nov 02 18:56:39 2015 +0100
@@ -0,0 +1,50 @@
+/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file
+ */
+
+#ifndef __SIEVE_EXT_IMAP4FLAGS_H
+#define __SIEVE_EXT_IMAP4FLAGS_H
+
+struct sieve_variable_storage;
+
+/*
+ * Imap4flags extension
+ */
+
+/* FIXME: this is not suitable for future plugin support */
+
+extern const struct sieve_extension_def imap4flags_extension;
+
+static inline const struct sieve_extension *
+sieve_ext_imap4flags_require_extension
+(struct sieve_instance *svinst)
+{
+ return sieve_extension_require
+ (svinst, &imap4flags_extension, TRUE);
+}
+
+/*
+ * Flag manipulation
+ */
+
+int sieve_ext_imap4flags_set_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index,
+ struct sieve_stringlist *flags) ATTR_NULL(2);
+int sieve_ext_imap4flags_add_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index,
+ struct sieve_stringlist *flags) ATTR_NULL(2);
+int sieve_ext_imap4flags_remove_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_variable_storage *storage, unsigned int var_index,
+ struct sieve_stringlist *flags) ATTR_NULL(2);
+
+/*
+ * Flag retrieval
+ */
+
+struct sieve_stringlist *sieve_ext_imap4flags_get_flags
+(const struct sieve_runtime_env *renv,
+ struct sieve_stringlist *flags_list);
+
+#endif
diff -r a146b20160f6 -r 334f0ba2fd9b src/lib-sieve/plugins/imap4flags/tst-hasflag.c
--- a/src/lib-sieve/plugins/imap4flags/tst-hasflag.c Mon Nov 02 18:56:39 2015 +0100
+++ b/src/lib-sieve/plugins/imap4flags/tst-hasflag.c Mon Nov 02 18:56:39 2015 +0100
@@ -225,11 +225,11 @@
sieve_runtime_trace(renv, SIEVE_TRLVL_TESTS, "hasflag test");
- value_list = ext_imap4flags_get_flags(renv, variables_list);
+ value_list = sieve_ext_imap4flags_get_flags(renv, variables_list);
if ( sieve_match_type_is(&mcht, is_match_type) ||
sieve_match_type_is(&mcht, contains_match_type) )
- key_list = ext_imap4flags_get_flags(renv, flag_list);
+ key_list = sieve_ext_imap4flags_get_flags(renv, flag_list);
else
key_list = flag_list;
More information about the dovecot-cvs
mailing list