changeset 4265:75d5843153f1 HEAD

Added message_part to struct message_block and some cleanups.
author Timo Sirainen <timo.sirainen@movial.fi>
date Tue, 09 May 2006 12:37:40 +0300
parents b3fa08c14747
children 662578b5ae22
files src/lib-mail/message-parser.c src/lib-mail/message-parser.h
diffstat 2 files changed, 14 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/message-parser.c	Tue May 09 12:36:58 2006 +0300
+++ b/src/lib-mail/message-parser.c	Tue May 09 12:37:40 2006 +0300
@@ -242,15 +242,8 @@
 	/* get back to parent MIME part, summing the child MIME part sizes
 	   into parent's body sizes */
 	while (boundary->part != ctx->part) {
-		ctx->part->parent->body_size.physical_size +=
-			ctx->part->header_size.physical_size +
-			ctx->part->body_size.physical_size;
-		ctx->part->parent->body_size.virtual_size +=
-			ctx->part->header_size.virtual_size +
-			ctx->part->body_size.virtual_size;
-		ctx->part->parent->body_size.lines +=
-			ctx->part->header_size.lines +
-			ctx->part->body_size.lines;
+		message_size_add(&ctx->part->parent->body_size,
+				 &ctx->part->body_size);
 		ctx->part = ctx->part->parent;
 	}
 
@@ -542,29 +535,27 @@
 	int ret;
 	bool eof = FALSE;
 
+	block_r->part = ctx->part;
+
 	while ((ret = ctx->parse_next_block(ctx, block_r)) == 0) {
 		if ((ret = i_stream_read(ctx->input)) == 0)
 			break;
 		if (ret < 0) {
+			if (ret == -2)
+				ret = 0;
 			if (eof)
 				break;
 			eof = TRUE;
 		} else {
 			eof = FALSE;
 		}
+		block_r->part = ctx->part;
 	}
 
 	if (ret < 0) {
 		while (ctx->part->parent != NULL) {
-			ctx->part->parent->body_size.physical_size +=
-				ctx->part->header_size.physical_size +
-				ctx->part->body_size.physical_size;
-			ctx->part->parent->body_size.virtual_size +=
-				ctx->part->header_size.virtual_size +
-				ctx->part->body_size.virtual_size;
-			ctx->part->parent->body_size.lines +=
-				ctx->part->header_size.lines +
-				ctx->part->body_size.lines;
+			message_size_add(&ctx->part->parent->body_size,
+					 &ctx->part->body_size);
 			ctx->part = ctx->part->parent;
 		}
 	}
@@ -581,7 +572,7 @@
 	int ret;
 
 	while ((ret = message_parser_parse_next_block(ctx, &block)) > 0) {
-		callback(ctx->part, block.hdr, context);
+		callback(block.part, block.hdr, context);
 
 		if (block.hdr == NULL)
 			break;
@@ -605,7 +596,7 @@
 
 	while ((ret = message_parser_parse_next_block(ctx, &block)) > 0) {
 		if (block.size == 0 && hdr_callback != NULL)
-			hdr_callback(ctx->part, block.hdr, context);
+			hdr_callback(block.part, block.hdr, context);
 	}
 	i_assert(ret != 0);
 }
--- a/src/lib-mail/message-parser.h	Tue May 09 12:36:58 2006 +0300
+++ b/src/lib-mail/message-parser.h	Tue May 09 12:37:40 2006 +0300
@@ -38,6 +38,9 @@
 struct message_parser_ctx;
 
 struct message_block {
+	/* Message part this block belongs to */
+	struct message_part *part;
+
 	/* non-NULL if a header line was read */
 	struct message_header_line *hdr;