diff src/lib-index/mail-cache-compress.c @ 2339:406692edc12d HEAD

Cache fixes. Decisions are saved again.
author Timo Sirainen <tss@iki.fi>
date Tue, 20 Jul 2004 19:50:56 +0300
parents 7d02e2a7672d
children fed6d07bd8ee
line wrap: on
line diff
--- a/src/lib-index/mail-cache-compress.c	Tue Jul 20 15:45:13 2004 +0300
+++ b/src/lib-index/mail-cache-compress.c	Tue Jul 20 19:50:56 2004 +0300
@@ -32,7 +32,8 @@
 	*field_seen = ctx->field_seen_value;
 
 	field = view->cache->file_field_map[file_field];
-	dec = view->cache->fields[field].decision & ~MAIL_CACHE_DECISION_FORCED;
+	dec = view->cache->fields[field].field.decision &
+		~MAIL_CACHE_DECISION_FORCED;
 	if (ctx->new_msg) {
 		if (dec == MAIL_CACHE_DECISION_NO)
 			return 1;
@@ -43,7 +44,7 @@
 
 	buffer_append(ctx->buffer, &file_field, sizeof(file_field));
 
-	if (view->cache->fields[field].field_size == (unsigned int)-1) {
+	if (view->cache->fields[field].field.field_size == (unsigned int)-1) {
 		size32 = (uint32_t)data_size;
 		buffer_append(ctx->buffer, &size32, sizeof(size32));
 	}
@@ -65,7 +66,6 @@
 	struct mail_cache_record cache_rec;
 	struct ostream *output;
 	buffer_t *buffer;
-	size_t size;
 	uint32_t message_count, seq, first_new_seq, old_offset;
 	uoff_t offset;
 
@@ -93,14 +93,12 @@
 	hdr.version = MAIL_CACHE_VERSION;
 	hdr.indexid = idx_hdr->indexid;
 	hdr.file_seq = idx_hdr->cache_file_seq + 1;
+	o_stream_send(output, &hdr, sizeof(hdr));
 
 	if (cache->fields_count != 0) {
 		hdr.field_header_offset =
-			mail_cache_uint32_to_offset(sizeof(hdr));
-	}
-	o_stream_send(output, &hdr, sizeof(hdr));
+			mail_cache_uint32_to_offset(output->offset);
 
-	if (cache->fields_count != 0) {
 		t_push();
 		buffer = buffer_create_dynamic(pool_datastack_create(),
 					       256, (size_t)-1);