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