dovecot-2.2: imap-parser: Allow calling imap_parser_read_args() ...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Aug 29 21:08:20 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/e0a3812771fd
changeset: 14979:e0a3812771fd
user: Timo Sirainen <tss at iki.fi>
date: Wed Aug 29 21:04:45 2012 +0300
description:
imap-parser: Allow calling imap_parser_read_args() multiple times with larger count parameter.
diffstat:
src/lib-imap/imap-parser.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diffs (44 lines):
diff -r f6a9e6d7e5bd -r e0a3812771fd src/lib-imap/imap-parser.c
--- a/src/lib-imap/imap-parser.c Wed Aug 29 21:04:09 2012 +0300
+++ b/src/lib-imap/imap-parser.c Wed Aug 29 21:04:45 2012 +0300
@@ -49,6 +49,7 @@
unsigned int literal8:1;
unsigned int literal_size_return:1;
unsigned int eol:1;
+ unsigned int args_added_extra_eol:1;
unsigned int fatal_error:1;
};
@@ -110,6 +111,7 @@
parser->literal_skip_crlf = FALSE;
parser->eol = FALSE;
+ parser->args_added_extra_eol = FALSE;
parser->literal_size_return = FALSE;
}
@@ -624,6 +626,11 @@
arg = array_append_space(&parser->root_list);
arg->type = IMAP_ARG_EOL;
+ if (!parser->eol)
+ parser->args_added_extra_eol = TRUE;
+ else
+ i_assert(!parser->literal_size_return);
+
*args_r = array_get(&parser->root_list, &count);
return ret;
}
@@ -634,10 +641,11 @@
{
parser->flags = flags;
- if (parser->literal_size_return) {
+ if (parser->args_added_extra_eol) {
/* delete EOL */
array_delete(&parser->root_list,
array_count(&parser->root_list)-1, 1);
+ parser->args_added_extra_eol = FALSE;
parser->literal_size_return = FALSE;
}
More information about the dovecot-cvs
mailing list