[dovecot-cvs] dovecot/src/lib-index/mbox mbox-index.c,1.78,1.79
cras at procontrol.fi
cras at procontrol.fi
Thu Aug 21 05:59:52 EEST 2003
Update of /home/cvs/dovecot/src/lib-index/mbox
In directory danu:/tmp/cvs-serv126/lib-index/mbox
Modified Files:
mbox-index.c
Log Message:
Removed some header/body size fields. We use only message_part now
everywhere since it's small enough. virtual_full_size was left because we
may know that by just reading maildir filename.
Index: mbox-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mbox/mbox-index.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -d -r1.78 -r1.79
--- mbox-index.c 10 Aug 2003 23:56:23 -0000 1.78
+++ mbox-index.c 21 Aug 2003 01:59:50 -0000 1.79
@@ -3,6 +3,7 @@
#include "lib.h"
#include "buffer.h"
#include "istream.h"
+#include "message-part-serialize.h"
#include "mbox-index.h"
#include "mbox-lock.h"
#include "mail-index-util.h"
@@ -690,6 +691,10 @@
struct mail_index_record *rec,
uoff_t *offset, uoff_t *hdr_size, uoff_t *body_size)
{
+ struct message_size _hdr_size, _body_size;
+ const void *data;
+ size_t size;
+
if (offset != NULL) {
if (!mail_cache_copy_fixed_field(index->cache, rec,
MAIL_CACHE_LOCATION_OFFSET,
@@ -701,25 +706,26 @@
}
}
- if (hdr_size != NULL) {
- if (!mail_cache_copy_fixed_field(index->cache, rec,
- MAIL_CACHE_HEADER_SIZE,
- hdr_size, sizeof(*hdr_size))) {
+ if (hdr_size != NULL || body_size != NULL) {
+ if (!mail_cache_lookup_field(index->cache, rec,
+ MAIL_CACHE_MESSAGEPART,
+ &data, &size)) {
mail_cache_set_corrupted(index->cache,
- "Missing header size for record %u", rec->uid);
+ "Missing message_part for record %u", rec->uid);
return FALSE;
}
- }
-
- if (body_size != NULL) {
- if (!mail_cache_copy_fixed_field(index->cache, rec,
- MAIL_CACHE_BODY_SIZE,
- body_size,
- sizeof(*body_size))) {
+ if (!message_part_deserialize_size(data, size,
+ &_hdr_size, &_body_size)) {
mail_cache_set_corrupted(index->cache,
- "Missing body size for record %u", rec->uid);
+ "Corrupted message_part for record %u",
+ rec->uid);
return FALSE;
}
+
+ if (hdr_size != NULL)
+ *hdr_size = _hdr_size.physical_size;
+ if (body_size != NULL)
+ *body_size = _body_size.physical_size;
}
return TRUE;
More information about the dovecot-cvs
mailing list