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