From 8e212824134c1740d05fb36799f78716c5059801 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Fri, 12 Nov 2004 05:53:12 +0000 Subject: ** Merge in notzed-messageinfo-branch, fix some minor conflicts. 2004-11-12 Not Zed ** Merge in notzed-messageinfo-branch, fix some minor conflicts. svn path=/trunk/; revision=27898 --- camel/providers/imap4/camel-imap4-summary.c | 71 ++++++++++++++++------------- 1 file changed, 39 insertions(+), 32 deletions(-) (limited to 'camel/providers/imap4/camel-imap4-summary.c') diff --git a/camel/providers/imap4/camel-imap4-summary.c b/camel/providers/imap4/camel-imap4-summary.c index ef3e7e3bbc..ce31d87181 100644 --- a/camel/providers/imap4/camel-imap4-summary.c +++ b/camel/providers/imap4/camel-imap4-summary.c @@ -36,6 +36,7 @@ #include #include +#include #include #include "camel-imap4-store.h" @@ -57,7 +58,7 @@ static void camel_imap4_summary_finalize (CamelObject *object); static int imap4_header_load (CamelFolderSummary *summary, FILE *fin); static int imap4_header_save (CamelFolderSummary *summary, FILE *fout); -static CamelMessageInfo *imap4_message_info_new (CamelFolderSummary *summary, struct _camel_header_raw *header); +static CamelMessageInfo *imap4_message_info_new_from_header (CamelFolderSummary *summary, struct _camel_header_raw *header); static CamelMessageInfo *imap4_message_info_load (CamelFolderSummary *summary, FILE *fin); static int imap4_message_info_save (CamelFolderSummary *summary, FILE *fout, CamelMessageInfo *info); @@ -94,7 +95,7 @@ camel_imap4_summary_class_init (CamelIMAP4SummaryClass *klass) summary_class->summary_header_load = imap4_header_load; summary_class->summary_header_save = imap4_header_save; - summary_class->message_info_new = imap4_message_info_new; + summary_class->message_info_new_from_header = imap4_message_info_new_from_header; summary_class->message_info_load = imap4_message_info_load; summary_class->message_info_save = imap4_message_info_save; } @@ -430,7 +431,8 @@ decode_envelope (CamelIMAP4Engine *engine, CamelMessageInfo *info, camel_imap4_t { unsigned char md5sum[16]; char *nstring; - + CamelIMAP4MessageInfo *iinfo = (CamelIMAP4MessageInfo *)info; + if (camel_imap4_engine_next_token (engine, token, ex) == -1) return -1; @@ -439,18 +441,20 @@ decode_envelope (CamelIMAP4Engine *engine, CamelMessageInfo *info, camel_imap4_t return -1; } - if (envelope_decode_date (engine, &info->date_sent, ex) == -1) + if (envelope_decode_date (engine, &iinfo->info.date_sent, ex) == -1) goto exception; /* subject */ if (envelope_decode_nstring (engine, &nstring, TRUE, ex) == -1) goto exception; - camel_message_info_set_subject (info, nstring); + iinfo->info.subject = camel_pstring_strdup(nstring); + g_free(nstring); /* from */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; - camel_message_info_set_from (info, nstring); + iinfo->info.from = camel_pstring_strdup(nstring); + g_free(nstring); /* sender */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) @@ -465,12 +469,14 @@ decode_envelope (CamelIMAP4Engine *engine, CamelMessageInfo *info, camel_imap4_t /* to */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; - camel_message_info_set_to (info, nstring); + iinfo->info.to = camel_pstring_strdup(nstring); + g_free(nstring); /* cc */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; - camel_message_info_set_cc (info, nstring); + iinfo->info.cc = camel_pstring_strdup(nstring); + g_free(nstring); /* bcc */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) @@ -482,7 +488,7 @@ decode_envelope (CamelIMAP4Engine *engine, CamelMessageInfo *info, camel_imap4_t goto exception; if (nstring != NULL) { - info->references = decode_references (nstring); + iinfo->info.references = decode_references (nstring); g_free (nstring); } @@ -492,7 +498,7 @@ decode_envelope (CamelIMAP4Engine *engine, CamelMessageInfo *info, camel_imap4_t if (nstring != NULL) { md5_get_digest (nstring, strlen (nstring), md5sum); - memcpy (info->message_id.id.hash, md5sum, sizeof (info->message_id.id.hash)); + memcpy (iinfo->info.message_id.id.hash, md5sum, sizeof (iinfo->info.message_id.id.hash)); g_free (nstring); } @@ -666,7 +672,7 @@ imap4_fetch_all_free (struct imap4_fetch_all_t *fetch) if (!(envelope = fetch->added->pdata[i])) continue; - camel_folder_summary_info_free (fetch->summary, envelope->info); + camel_message_info_free(envelope->info); g_free (envelope); } @@ -714,13 +720,13 @@ imap4_fetch_all_add (struct imap4_fetch_all_t *fetch) if (envelope->changed != IMAP4_FETCH_ALL) { d(fprintf (stderr, "Hmmm, IMAP4 server didn't give us everything for message %d\n", i + 1)); - camel_folder_summary_info_free (fetch->summary, envelope->info); + camel_message_info_free(envelope->info); g_free (envelope); continue; } if ((info = camel_folder_summary_uid (fetch->summary, camel_message_info_uid (envelope->info)))) { - camel_folder_summary_info_free (fetch->summary, envelope->info); + camel_message_info_free(envelope->info); g_free (envelope); continue; } @@ -769,14 +775,14 @@ imap4_fetch_all_update (struct imap4_fetch_all_t *fetch) new_iinfo = (CamelIMAP4MessageInfo *) envelope->info; iinfo = (CamelIMAP4MessageInfo *) info; - flags = info->flags; - info->flags = camel_imap4_merge_flags (iinfo->server_flags, info->flags, new_iinfo->server_flags); + flags = iinfo->info.flags; + iinfo->info.flags = camel_imap4_merge_flags (iinfo->server_flags, iinfo->info.flags, new_iinfo->server_flags); iinfo->server_flags = new_iinfo->server_flags; - if (info->flags != flags) + if (iinfo->info.flags != flags) camel_folder_change_info_change_uid (changes, camel_message_info_uid (info)); } - camel_folder_summary_info_free (fetch->summary, info); + camel_message_info_free(info); } for (i = 0; i < fetch->added->len; i++) { @@ -788,13 +794,13 @@ imap4_fetch_all_update (struct imap4_fetch_all_t *fetch) info = envelope->info; if (!first && camel_message_info_uid (info)) { if ((info = camel_folder_summary_uid (fetch->summary, camel_message_info_uid (info)))) { - camel_folder_summary_info_free (fetch->summary, info); + camel_message_info_free(info); } else { first = i + fetch->first; } } - camel_folder_summary_info_free (fetch->summary, envelope->info); + camel_message_info_free(envelope->info); g_free (envelope); } @@ -835,7 +841,7 @@ untagged_fetch_all (CamelIMAP4Engine *engine, CamelIMAP4Command *ic, guint32 ind g_ptr_array_set_size (added, index - fetch->first + 1); if (!(envelope = added->pdata[index - fetch->first])) { - iinfo = (CamelIMAP4MessageInfo *) (info = camel_folder_summary_info_new (summary)); + iinfo = (CamelIMAP4MessageInfo *) (info = camel_message_info_new (summary)); envelope = g_new (struct imap4_envelope_t, 1); added->pdata[index - fetch->first] = envelope; envelope->info = info; @@ -876,9 +882,9 @@ untagged_fetch_all (CamelIMAP4Engine *engine, CamelIMAP4Command *ic, guint32 ind g_warning ("Hmmm, server is sending us ENVELOPE data for a message we didn't ask for (message %u)\n", index); - tmp = camel_folder_summary_info_new (summary); + tmp = camel_message_info_new (summary); rv = decode_envelope (engine, tmp, token, ex); - camel_folder_summary_info_free (summary, tmp); + camel_message_info_free(tmp); if (rv == -1) goto exception; @@ -889,7 +895,7 @@ untagged_fetch_all (CamelIMAP4Engine *engine, CamelIMAP4Command *ic, guint32 ind if (camel_imap4_parse_flags_list (engine, &server_flags, ex) == -1) return -1; - info->flags = camel_imap4_merge_flags (iinfo->server_flags, info->flags, server_flags); + iinfo->info.flags = camel_imap4_merge_flags (iinfo->server_flags, iinfo->info.flags, server_flags); iinfo->server_flags = server_flags; changed |= IMAP4_FETCH_FLAGS; @@ -899,11 +905,11 @@ untagged_fetch_all (CamelIMAP4Engine *engine, CamelIMAP4Command *ic, guint32 ind switch (token->token) { case CAMEL_IMAP4_TOKEN_NIL: - info->date_received = (time_t) -1; + iinfo->info.date_received = (time_t) -1; break; case CAMEL_IMAP4_TOKEN_ATOM: case CAMEL_IMAP4_TOKEN_QSTRING: - info->date_received = decode_internaldate (token->v.qstring); + iinfo->info.date_received = decode_internaldate (token->v.qstring); break; default: goto unexpected; @@ -917,7 +923,7 @@ untagged_fetch_all (CamelIMAP4Engine *engine, CamelIMAP4Command *ic, guint32 ind if (token->token != CAMEL_IMAP4_TOKEN_NUMBER) goto unexpected; - info->size = token->v.number; + iinfo->info.size = token->v.number; changed |= IMAP4_FETCH_RFC822SIZE; } else if (!strcmp (token->v.atom, "UID")) { @@ -935,7 +941,8 @@ untagged_fetch_all (CamelIMAP4Engine *engine, CamelIMAP4Command *ic, guint32 ind g_assert_not_reached (); } } else { - camel_message_info_set_uid (info, g_strdup (uid)); + g_free(info->uid); + info->uid = g_strdup (uid); g_hash_table_insert (fetch->uid_hash, (void *) camel_message_info_uid (info), envelope); changed |= IMAP4_FETCH_UID; } @@ -1071,11 +1078,11 @@ imap4_build_summary (CamelFolderSummary *summary, guint32 first, guint32 last) #endif static CamelMessageInfo * -imap4_message_info_new (CamelFolderSummary *summary, struct _camel_header_raw *header) +imap4_message_info_new_from_header (CamelFolderSummary *summary, struct _camel_header_raw *header) { CamelMessageInfo *info; - info = CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->message_info_new (summary, header); + info = CAMEL_FOLDER_SUMMARY_CLASS (parent_class)->message_info_new_from_header (summary, header); ((CamelIMAP4MessageInfo *) info)->server_flags = 0; @@ -1100,7 +1107,7 @@ imap4_message_info_load (CamelFolderSummary *summary, FILE *fin) exception: - camel_folder_summary_info_free (summary, info); + camel_message_info_free(info); return NULL; } @@ -1178,7 +1185,7 @@ camel_imap4_summary_set_uidvalidity (CamelFolderSummary *summary, guint32 uidval continue; camel_folder_change_info_remove_uid (changes, camel_message_info_uid (info)); - camel_folder_summary_info_free (summary, info); + camel_message_info_free(info); } camel_folder_summary_clear (summary); @@ -1215,7 +1222,7 @@ camel_imap4_summary_expunge (CamelFolderSummary *summary, int seqid) changes = camel_folder_change_info_new (); camel_folder_change_info_remove_uid (changes, uid); - camel_folder_summary_info_free (summary, info); + camel_message_info_free(info); camel_folder_summary_remove_index (summary, seqid); camel_object_trigger_event (imap4_summary->folder, "folder_changed", changes); -- cgit v1.2.3