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