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;