Index: camel/camel-exchange-summary.c
===================================================================
RCS file: /cvs/gnome/evolution-exchange/camel/camel-exchange-summary.c,v
retrieving revision 1.5
diff -u -p -r1.5 camel-exchange-summary.c
--- camel/camel-exchange-summary.c	30 Jul 2005 10:08:07 -0000	1.5
+++ camel/camel-exchange-summary.c	18 Jul 2006 22:35:11 -0000
@@ -38,11 +38,10 @@
 
 #define CAMEL_EXCHANGE_SUMMARY_VERSION (1)
 
-static int header_load (CamelFolderSummary *summary, FILE *in);
+static int header_load (CamelFolderSummary *summary);
 static int header_save (CamelFolderSummary *summary, FILE *out);
 
-static CamelMessageInfo *message_info_load (CamelFolderSummary *summary,
-					    FILE *in);
+static CamelMessageInfo *message_info_load (CamelFolderSummary *summary);
 static int               message_info_save (CamelFolderSummary *summary,
 					    FILE *out,
 					    CamelMessageInfo *info);
@@ -129,21 +128,23 @@ camel_exchange_summary_new (struct _Came
 
 
 static int
-header_load (CamelFolderSummary *summary, FILE *in)
+header_load (CamelFolderSummary *summary)
 {
 	CamelExchangeSummary *exchange = (CamelExchangeSummary *) summary;
 	guint32 version, readonly;
 	
-	if (CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->summary_header_load (summary, in) == -1)
+	if (CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->summary_header_load (summary) == -1)
 		return -1;
 	
-	if (camel_file_util_decode_uint32 (in, &version) == -1)
-		return -1;
+	version = g_ntohl(get_unaligned_u32(s->filepos));
+	s->filepos += 4;
+		
 	if (version > CAMEL_EXCHANGE_SUMMARY_VERSION)
 		return -1;
 
-	if (camel_file_util_decode_uint32 (in, &readonly) == -1)
-		return -1;
+	readonly = g_ntohl(get_unaligned_u32(s->filepos));
+	s->filepos += 4;
+	
 	exchange->readonly = readonly;
 	
 	return 0;
@@ -167,18 +168,23 @@ header_save (CamelFolderSummary *summary
 }
 
 static CamelMessageInfo *
-message_info_load (CamelFolderSummary *summary, FILE *in)
+message_info_load (CamelFolderSummary *summary)
 {
 	CamelMessageInfo *info;
 	CamelExchangeMessageInfo *einfo;
 	char *thread_index;
 
-	info = CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->message_info_load (summary, in);
+	info = CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->message_info_load (summary);
 	if (info) {
+		unsigned char *ptrchr;
 		einfo = (CamelExchangeMessageInfo *)info;
 
-		if (camel_file_util_decode_string (in, &thread_index) == -1)
-			goto error;
+		ptrchr = s->filepos;
+		ptrchr = camel_file_util_mmap_decode_uint32 (ptrchr, &len, TRUE);
+		if (len) 
+			thread_index = ptrchr;
+		ptrchr += len;		
+		s->filepos = ptrchr;
 
 		if (thread_index && *thread_index)
 			einfo->thread_index = thread_index;

