dovecot: Added IMAP_PARSE_FLAG_ATOM_ALLCHARS.

dovecot at dovecot.org dovecot at dovecot.org
Sun Dec 2 12:50:54 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/3ec5a07d00f2
changeset: 6889:3ec5a07d00f2
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Dec 02 12:50:50 2007 +0200
description:
Added IMAP_PARSE_FLAG_ATOM_ALLCHARS.

diffstat:

2 files changed, 15 insertions(+), 6 deletions(-)
src/lib-imap/imap-parser.c |   17 ++++++++++++-----
src/lib-imap/imap-parser.h |    4 +++-

diffs (45 lines):

diff -r 51bf40995f0f -r 3ec5a07d00f2 src/lib-imap/imap-parser.c
--- a/src/lib-imap/imap-parser.c	Sun Dec 02 11:33:36 2007 +0200
+++ b/src/lib-imap/imap-parser.c	Sun Dec 02 12:50:50 2007 +0200
@@ -231,15 +231,22 @@ static void imap_parser_save_arg(struct 
 
 static int is_valid_atom_char(struct imap_parser *parser, char chr)
 {
+	const char *error;
+
 	if (IS_ATOM_SPECIAL_INPUT((unsigned char)chr)) {
-		parser->error = "Invalid characters in atom";
+		error = "Invalid characters in atom";
 		return FALSE;
 	} else if ((chr & 0x80) != 0) {
-		parser->error = "8bit data in atom";
+		error = "8bit data in atom";
 		return FALSE;
-	}
-
-	return TRUE;
+	} else {
+		return TRUE;
+	}
+
+	if ((parser->flags & IMAP_PARSE_FLAG_ATOM_ALLCHARS) != 0)
+		return TRUE;
+	parser->error = error;
+	return FALSE;
 }
 
 static int imap_parser_read_atom(struct imap_parser *parser,
diff -r 51bf40995f0f -r 3ec5a07d00f2 src/lib-imap/imap-parser.h
--- a/src/lib-imap/imap-parser.h	Sun Dec 02 11:33:36 2007 +0200
+++ b/src/lib-imap/imap-parser.h	Sun Dec 02 12:50:50 2007 +0200
@@ -26,7 +26,9 @@ enum imap_parser_flags {
 	/* Don't remove '\' chars from string arguments */
 	IMAP_PARSE_FLAG_NO_UNESCAPE	= 0x02,
 	/* Return literals as IMAP_ARG_LITERAL instead of IMAP_ARG_STRING */
-	IMAP_PARSE_FLAG_LITERAL_TYPE	= 0x04
+	IMAP_PARSE_FLAG_LITERAL_TYPE	= 0x04,
+	/* Don't check if atom contains invalid characters */
+	IMAP_PARSE_FLAG_ATOM_ALLCHARS	= 0x08
 };
 
 enum imap_arg_type {


More information about the dovecot-cvs mailing list