dovecot-2.2-pigeonhole: lib-sieve: imap4flags extension: Made fl...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Fri Jan 8 21:05:08 UTC 2016


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/7b079abc1680
changeset: 2217:7b079abc1680
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Fri Jan 08 22:05:03 2016 +0100
description:
lib-sieve: imap4flags extension: Made flag syntax checking available to other extensions.

diffstat:

 src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c |  28 ++++------------
 src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h  |   6 +++
 2 files changed, 13 insertions(+), 21 deletions(-)

diffs (93 lines):

diff -r fe174b9f29ad -r 7b079abc1680 src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c
--- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c	Fri Jan 08 20:49:39 2016 +0100
+++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c	Fri Jan 08 22:05:03 2016 +0100
@@ -5,6 +5,7 @@
 #include "str.h"
 #include "str-sanitize.h"
 #include "mail-storage.h"
+#include "imap-arg.h"
 
 #include "sieve-common.h"
 #include "sieve-commands.h"
@@ -22,12 +23,6 @@
 #include "ext-imap4flags-common.h"
 
 /*
- * Forward declarations
- */
-
-static bool flag_is_valid(const char *flag);
-
-/*
  * Tagged arguments
  */
 
@@ -132,9 +127,9 @@
 		ext_imap4flags_iter_init(&fiter, sieve_ast_argument_str(arg));
 
 		while ( (flag=ext_imap4flags_iter_get_flag(&fiter)) != NULL ) {
-			if ( !flag_is_valid(flag) ) {
+			if ( !sieve_ext_imap4flags_flag_is_valid(flag) ) {
 				sieve_argument_validate_warning(valdtr, arg,
-                	"IMAP flag '%s' specified for the %s command is invalid "
+					"IMAP flag '%s' specified for the %s command is invalid "
 					"and will be ignored (only first invalid is reported)",
 					str_sanitize(flag, 64), sieve_command_identifier(cmd));
 				break;
@@ -265,7 +260,7 @@
  * flags, making the internal or variable flag list indefinitely long
  */
 
-static bool flag_is_valid(const char *flag)
+bool sieve_ext_imap4flags_flag_is_valid(const char *flag)
 {
 	if (*flag == '\\') {
 		/* System flag */
@@ -288,20 +283,10 @@
 		 * Syntax (IMAP4rev1, RFC 3501, Section 9. Formal Syntax) :
 		 *  flag-keyword    = atom
 		 *  atom            = 1*ATOM-CHAR
-		 *  ATOM-CHAR       = <any CHAR except atom-specials>
-		 *  atom-specials   = "(" / ")" / "{" / SP / CTL / list-wildcards /
-		 *                    quoted-specials / resp-specials
-		 *  CTL             =  %x00-1F / %x7F
-		 *  list-wildcards  = "%" / "*"
-		 *  quoted-specials = DQUOTE / "\"
-		 *  resp-specials   = "]"
 		 */
-
 		p = flag;
 		while ( *p != '\0' ) {
-			if ( *p == '(' || *p == ')' || *p == '{' || *p == ' ' ||
-				*p <= 0x1F || *p == 0x7F || *p == '%' || *p ==  '*' ||
-				*p == '"' || *p == '\\' || *p == ']' )
+			if ( !IS_ATOM_CHAR(*p) )
 				return FALSE;
 			p++;
 		}
@@ -449,7 +434,8 @@
 	ext_imap4flags_iter_init(&flit, flags);
 
 	while ( (flg=ext_imap4flags_iter_get_flag(&flit)) != NULL ) {
-		if ( flag_is_valid(flg) && !flags_list_flag_exists(flags_list, flg) ) {
+		if ( sieve_ext_imap4flags_flag_is_valid(flg) &&
+			!flags_list_flag_exists(flags_list, flg) ) {
 			if ( str_len(flags_list) != 0 )
 				str_append_c(flags_list, ' ');
 			str_append(flags_list, flg);
diff -r fe174b9f29ad -r 7b079abc1680 src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h
--- a/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h	Fri Jan 08 20:49:39 2016 +0100
+++ b/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h	Fri Jan 08 22:05:03 2016 +0100
@@ -23,6 +23,12 @@
 }
 
 /*
+ * Flag syntax
+ */
+
+bool sieve_ext_imap4flags_flag_is_valid(const char *flag);
+
+/*
  * Flag manipulation
  */
 


More information about the dovecot-cvs mailing list