diff options
author | Not Zed <NotZed@Ximian.com> | 2004-11-12 13:53:12 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2004-11-12 13:53:12 +0800 |
commit | 8e212824134c1740d05fb36799f78716c5059801 (patch) | |
tree | 47fc692dba176af4fa0ccfa45d31739886162c12 /camel/providers/imap | |
parent | 55bead18b69fd4e7ad2b09700867add2ca7e9838 (diff) | |
download | gsoc2013-evolution-8e212824134c1740d05fb36799f78716c5059801.tar gsoc2013-evolution-8e212824134c1740d05fb36799f78716c5059801.tar.gz gsoc2013-evolution-8e212824134c1740d05fb36799f78716c5059801.tar.bz2 gsoc2013-evolution-8e212824134c1740d05fb36799f78716c5059801.tar.lz gsoc2013-evolution-8e212824134c1740d05fb36799f78716c5059801.tar.xz gsoc2013-evolution-8e212824134c1740d05fb36799f78716c5059801.tar.zst gsoc2013-evolution-8e212824134c1740d05fb36799f78716c5059801.zip |
** Merge in notzed-messageinfo-branch, fix some minor conflicts.
2004-11-12 Not Zed <NotZed@Ximian.com>
** Merge in notzed-messageinfo-branch, fix some minor conflicts.
svn path=/trunk/; revision=27898
Diffstat (limited to 'camel/providers/imap')
-rw-r--r-- | camel/providers/imap/camel-imap-folder.c | 115 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-message-cache.c | 2 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 17 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-summary.c | 73 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-summary.h | 4 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-utils.c | 2 |
6 files changed, 111 insertions, 102 deletions
diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c index 6d6908e265..189844dfec 100644 --- a/camel/providers/imap/camel-imap-folder.c +++ b/camel/providers/imap/camel-imap-folder.c @@ -237,7 +237,7 @@ camel_imap_folder_new (CamelStore *parent, const char *folder_name, camel_folder_construct (folder, parent, folder_name, short_name); summary_file = g_strdup_printf ("%s/summary", folder_dir); - folder->summary = camel_imap_summary_new (summary_file); + folder->summary = camel_imap_summary_new (folder, summary_file); g_free (summary_file); if (!folder->summary) { camel_object_unref (CAMEL_OBJECT (folder)); @@ -387,7 +387,7 @@ camel_imap_folder_selected (CamelFolder *folder, CamelImapResponse *response, info = camel_folder_summary_index (folder->summary, count - 1); val = strtoul (camel_message_info_uid (info), NULL, 10); - camel_folder_summary_info_free (folder->summary, info); + camel_message_info_free(info); if (uid == 0 || uid != val) imap_folder->need_rescan = TRUE; } @@ -575,7 +575,7 @@ imap_rescan (CamelFolder *folder, int exists, CamelException *ex) ok = camel_imap_command_start (store, folder, ex, "UID FETCH 1:%s (FLAGS)", camel_message_info_uid (info)); - camel_folder_summary_info_free (folder->summary, info); + camel_message_info_free(info); if (!ok) { camel_operation_end (NULL); return; @@ -632,7 +632,7 @@ imap_rescan (CamelFolder *folder, int exists, CamelException *ex) iinfo = (CamelImapMessageInfo *)info; if (strcmp (camel_message_info_uid (info), new[i].uid) != 0) { - camel_folder_summary_info_free(folder->summary, info); + camel_message_info_free(info); seq = i + 1; g_array_append_val (removed, seq); i--; @@ -646,8 +646,8 @@ imap_rescan (CamelFolder *folder, int exists, CamelException *ex) server_set = new[i].flags & ~iinfo->server_flags; server_cleared = iinfo->server_flags & ~new[i].flags; - - info->flags = (info->flags | server_set) & ~server_cleared; + + iinfo->info.flags = (iinfo->info.flags | server_set) & ~server_cleared; iinfo->server_flags = new[i].flags; if (changes == NULL) @@ -655,7 +655,7 @@ imap_rescan (CamelFolder *folder, int exists, CamelException *ex) camel_folder_change_info_change_uid(changes, new[i].uid); } - camel_folder_summary_info_free (folder->summary, info); + camel_message_info_free(info); g_free (new[i].uid); } @@ -697,7 +697,7 @@ static GPtrArray * get_matching (CamelFolder *folder, guint32 flags, guint32 mask, char **set) { GPtrArray *matches; - CamelMessageInfo *info; + CamelImapMessageInfo *info; int i, max, range; GString *gset; @@ -706,11 +706,11 @@ get_matching (CamelFolder *folder, guint32 flags, guint32 mask, char **set) max = camel_folder_summary_count (folder->summary); range = -1; for (i = 0; i < max && !UID_SET_FULL (gset->len, UID_SET_LIMIT); i++) { - info = camel_folder_summary_index (folder->summary, i); + info = (CamelImapMessageInfo *)camel_folder_summary_index (folder->summary, i); if (!info) continue; - if ((info->flags & mask) != flags) { - camel_folder_summary_info_free (folder->summary, info); + if ((info->info.flags & mask) != flags) { + camel_message_info_free((CamelMessageInfo *)info); if (range != -1) { if (range != i - 1) { info = matches->pdata[matches->len - 1]; @@ -758,7 +758,7 @@ imap_sync_online (CamelFolder *folder, CamelException *ex) { CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store); CamelImapResponse *response = NULL; - CamelMessageInfo *info; + CamelImapMessageInfo *info; CamelException local_ex; GPtrArray *matches; char *set, *flaglist; @@ -779,33 +779,33 @@ imap_sync_online (CamelFolder *folder, CamelException *ex) */ max = camel_folder_summary_count (folder->summary); for (i = 0; i < max; i++) { - if (!(info = camel_folder_summary_index (folder->summary, i))) + if (!(info = (CamelImapMessageInfo *)camel_folder_summary_index (folder->summary, i))) continue; - if (!(info->flags & CAMEL_MESSAGE_FOLDER_FLAGGED)) { - camel_folder_summary_info_free (folder->summary, info); + if (!(info->info.flags & CAMEL_MESSAGE_FOLDER_FLAGGED)) { + camel_message_info_free((CamelMessageInfo *)info); continue; } /* Note: Cyrus is broken and will not accept an empty-set of flags so... if this is true then we want to unset the previously set flags.*/ - unset = !(info->flags & folder->permanent_flags); + unset = !(info->info.flags & folder->permanent_flags); /* Note: get_matching() uses UID_SET_LIMIT to limit the size of the uid-set string. We don't have to loop here to flush all the matching uids because they will be scooped up later by our parent loop (I think?). -- Jeff */ - matches = get_matching (folder, info->flags & (folder->permanent_flags | CAMEL_MESSAGE_FOLDER_FLAGGED), + matches = get_matching (folder, info->info.flags & (folder->permanent_flags | CAMEL_MESSAGE_FOLDER_FLAGGED), folder->permanent_flags | CAMEL_MESSAGE_FOLDER_FLAGGED, &set); - camel_folder_summary_info_free (folder->summary, info); + camel_message_info_free(info); if (matches == NULL) continue; /* FIXME: since we don't know the previously set flags, if unset is TRUE then just unset all the flags? */ - flaglist = imap_create_flag_list (unset ? folder->permanent_flags : info->flags & folder->permanent_flags); + flaglist = imap_create_flag_list (unset ? folder->permanent_flags : info->info.flags & folder->permanent_flags); /* Note: to `unset' flags, use -FLAGS.SILENT (<flag list>) */ response = camel_imap_command (store, folder, &local_ex, @@ -820,16 +820,15 @@ imap_sync_online (CamelFolder *folder, CamelException *ex) if (!camel_exception_is_set (&local_ex)) { for (j = 0; j < matches->len; j++) { info = matches->pdata[j]; - info->flags &= ~CAMEL_MESSAGE_FOLDER_FLAGGED; - ((CamelImapMessageInfo *) info)->server_flags = - info->flags & CAMEL_IMAP_SERVER_FLAGS; + info->info.flags &= ~CAMEL_MESSAGE_FOLDER_FLAGGED; + ((CamelImapMessageInfo *) info)->server_flags = info->info.flags & CAMEL_IMAP_SERVER_FLAGS; } camel_folder_summary_touch (folder->summary); } for (j = 0; j < matches->len; j++) { info = matches->pdata[j]; - camel_folder_summary_info_free (folder->summary, info); + camel_message_info_free(&info->info); } g_ptr_array_free (matches, TRUE); @@ -1167,10 +1166,11 @@ do_append (CamelFolder *folder, CamelMimeMessage *message, CamelStreamFilter *streamfilter; GByteArray *ba; char *flagstr, *end; - - /* create flag string param */ - if (info && info->flags) - flagstr = imap_create_flag_list (info->flags); + guint32 flags; + + flags = camel_message_info_flags(info); + if (flags) + flagstr = imap_create_flag_list (flags); else flagstr = NULL; @@ -1357,7 +1357,7 @@ imap_transfer_offline (CamelFolder *source, GPtrArray *uids, camel_imap_summary_add_offline_uncached (dest->summary, destuid, mi); camel_imap_message_cache_copy (sc, uid, dc, destuid, ex); - camel_folder_summary_info_free (source->summary, mi); + camel_message_info_free(mi); camel_folder_change_info_add_uid (changes, destuid); if (transferred_uids) @@ -1968,12 +1968,12 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex) { CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder); CamelImapStore *store = CAMEL_IMAP_STORE (folder->parent_store); - CamelMessageInfo *mi; + CamelImapMessageInfo *mi; CamelMimeMessage *msg = NULL; CamelStream *stream = NULL; int retry; - mi = camel_folder_summary_uid (folder->summary, uid); + mi = (CamelImapMessageInfo *)camel_folder_summary_uid (folder->summary, uid); if (mi == NULL) { camel_exception_setv(ex, CAMEL_EXCEPTION_FOLDER_INVALID_UID, _("Cannot get message: %s\n %s"), uid, _("No such message")); @@ -2001,11 +2001,11 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex) /* If the message is small or only 1 part, or server doesn't do 4v1 (properly) fetch it in one piece. */ if (store->server_level < IMAP_LEVEL_IMAP4REV1 || store->braindamaged - || mi->size < IMAP_SMALL_BODY_SIZE - || (!content_info_incomplete(mi->content) && !mi->content->childs)) { + || mi->info.size < IMAP_SMALL_BODY_SIZE + || (!content_info_incomplete(mi->info.content) && !mi->info.content->childs)) { msg = get_message_simple (imap_folder, uid, NULL, ex); } else { - if (content_info_incomplete (mi->content)) { + if (content_info_incomplete (mi->info.content)) { /* For larger messages, fetch the structure and build a message * with offline parts. (We check mi->content->type rather than * mi->content because camel_folder_summary_info_new always creates @@ -2038,7 +2038,7 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex) } if (body) - imap_parse_body ((const char **) &body, folder, mi->content); + imap_parse_body ((const char **) &body, folder, mi->info.content); if (fetch_data) g_datalist_clear (&fetch_data); @@ -2049,7 +2049,7 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex) if (camel_debug_start("imap:folder")) { printf("Folder get message '%s' folder info ->\n", uid); - camel_message_info_dump(mi); + camel_message_info_dump((CamelMessageInfo *)mi); camel_debug_end(); } @@ -2059,10 +2059,10 @@ imap_get_message (CamelFolder *folder, const char *uid, CamelException *ex) * fall back to fetching the entire thing and * let the mailer's "bad MIME" code handle it. */ - if (content_info_incomplete (mi->content)) + if (content_info_incomplete (mi->info.content)) msg = get_message_simple (imap_folder, uid, NULL, ex); else - msg = get_message (imap_folder, uid, mi->content, ex); + msg = get_message (imap_folder, uid, mi->info.content, ex); } } while (msg == NULL && retry < 2 @@ -2072,7 +2072,7 @@ done: /* FIXME, this shouldn't be done this way. */ if (msg) camel_medium_set_header (CAMEL_MEDIUM (msg), "X-Evolution-Source", store->base_url); fail: - camel_folder_summary_info_free (folder->summary, mi); + camel_message_info_free(&mi->info); return msg; } @@ -2201,7 +2201,7 @@ add_message_from_data (CamelFolder *folder, GPtrArray *messages, { CamelMimeMessage *msg; CamelStream *stream; - CamelMessageInfo *mi; + CamelImapMessageInfo *mi; const char *idate; int seq; @@ -2221,14 +2221,14 @@ add_message_from_data (CamelFolder *folder, GPtrArray *messages, return; } - mi = camel_folder_summary_info_new_from_message (folder->summary, msg); + mi = (CamelImapMessageInfo *)camel_folder_summary_info_new_from_message (folder->summary, msg); camel_object_unref (CAMEL_OBJECT (msg)); if ((idate = g_datalist_get_data (&data, "INTERNALDATE"))) - mi->date_received = decode_internaldate (idate); + mi->info.date_received = decode_internaldate (idate); - if (mi->date_received == -1) - mi->date_received = mi->date_sent; + if (mi->info.date_received == -1) + mi->info.date_received = mi->info.date_sent; messages->pdata[seq - first] = mi; } @@ -2253,7 +2253,7 @@ imap_update_summary (CamelFolder *folder, int exists, int i, seq, first, size, got; CamelImapResponseType type; const char *header_spec; - CamelMessageInfo *mi, *info; + CamelImapMessageInfo *mi, *info; CamelStream *stream; char *uid, *resp; GData *data; @@ -2272,9 +2272,9 @@ imap_update_summary (CamelFolder *folder, int exists, seq = camel_folder_summary_count (folder->summary); first = seq + 1; if (seq > 0) { - mi = camel_folder_summary_index (folder->summary, seq - 1); + mi = (CamelImapMessageInfo *)camel_folder_summary_index (folder->summary, seq - 1); uidval = strtoul(camel_message_info_uid (mi), NULL, 10); - camel_folder_summary_info_free (folder->summary, mi); + camel_message_info_free(&mi->info); } else uidval = 0; @@ -2433,24 +2433,23 @@ imap_update_summary (CamelFolder *folder, int exists, continue; } - mi = camel_message_info_new (); - camel_message_info_dup_to (pmi, mi); + mi = (CamelImapMessageInfo *)camel_message_info_clone(pmi); } uid = g_datalist_get_data (&data, "UID"); if (uid) - camel_message_info_set_uid (mi, g_strdup (uid)); + mi->info.uid = g_strdup (uid); flags = GPOINTER_TO_INT (g_datalist_get_data (&data, "FLAGS")); if (flags) { ((CamelImapMessageInfo *)mi)->server_flags = flags; /* "or" them in with the existing flags that may * have been set by summary_info_new_from_message. */ - mi->flags |= flags; + mi->info.flags |= flags; } size = GPOINTER_TO_INT (g_datalist_get_data (&data, "RFC822.SIZE")); if (size) - mi->size = size; + mi->info.size = size; g_datalist_clear (&data); } @@ -2474,7 +2473,7 @@ imap_update_summary (CamelFolder *folder, int exists, i + first); break; } - info = camel_folder_summary_uid(folder->summary, uid); + info = (CamelImapMessageInfo *)camel_folder_summary_uid(folder->summary, uid); if (info) { for (seq = 0; seq < camel_folder_summary_count (folder->summary); seq++) { if (folder->summary->messages->pdata[seq] == info) @@ -2486,20 +2485,20 @@ imap_update_summary (CamelFolder *folder, int exists, _("Unexpected server response: Identical UIDs provided for messages %d and %d"), seq + 1, i + first); - camel_folder_summary_info_free(folder->summary, info); + camel_message_info_free(&info->info); break; } - camel_folder_summary_add (folder->summary, mi); + camel_folder_summary_add (folder->summary, (CamelMessageInfo *)mi); camel_folder_change_info_add_uid (changes, camel_message_info_uid (mi)); - if ((mi->flags & CAMEL_IMAP_MESSAGE_RECENT)) + if ((mi->info.flags & CAMEL_IMAP_MESSAGE_RECENT)) camel_folder_change_info_recent_uid(changes, camel_message_info_uid (mi)); } for ( ; i < messages->len; i++) { if ((mi = messages->pdata[i])) - camel_folder_summary_info_free(folder->summary, mi); + camel_message_info_free(&mi->info); } g_ptr_array_free (messages, TRUE); @@ -2517,7 +2516,7 @@ imap_update_summary (CamelFolder *folder, int exists, if (messages) { for (i = 0; i < messages->len; i++) { if (messages->pdata[i]) - camel_folder_summary_info_free (folder->summary, messages->pdata[i]); + camel_message_info_free(messages->pdata[i]); } g_ptr_array_free (messages, TRUE); } @@ -2553,7 +2552,7 @@ camel_imap_folder_changed (CamelFolder *folder, int exists, camel_imap_message_cache_remove (imap_folder->cache, camel_message_info_uid (info)); CAMEL_IMAP_FOLDER_UNLOCK (imap_folder, cache_lock); camel_folder_summary_remove (folder->summary, info); - camel_folder_summary_info_free(folder->summary, info); + camel_message_info_free(info); } } diff --git a/camel/providers/imap/camel-imap-message-cache.c b/camel/providers/imap/camel-imap-message-cache.c index 17fa9ca5c8..3099602613 100644 --- a/camel/providers/imap/camel-imap-message-cache.c +++ b/camel/providers/imap/camel-imap-message-cache.c @@ -176,7 +176,7 @@ camel_imap_message_cache_new (const char *path, CamelFolderSummary *summary, info = camel_folder_summary_uid (summary, uid); if (info) { - camel_folder_summary_info_free (summary, info); + camel_message_info_free(info); cache_put (cache, uid, d->d_name, NULL); } else g_ptr_array_add (deletes, g_strdup_printf ("%s/%s", cache->path, d->d_name)); diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index b22743e72a..a2ecb71b91 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -1047,7 +1047,7 @@ imap_forget_folder (CamelImapStore *imap_store, const char *folder_name, CamelEx } summary_file = g_strdup_printf ("%s/summary", folder_dir); - summary = camel_imap_summary_new (summary_file); + summary = camel_imap_summary_new (NULL, summary_file); if (!summary) { g_free (summary_file); g_free (folder_dir); @@ -1597,14 +1597,17 @@ imap_disconnect_online (CamelService *service, gboolean clean, CamelException *e static gboolean imap_summary_is_dirty (CamelFolderSummary *summary) { - CamelMessageInfo *info; + CamelImapMessageInfo *info; int max, i; - + int found = FALSE; + max = camel_folder_summary_count (summary); - for (i = 0; i < max; i++) { - info = camel_folder_summary_index (summary, i); - if (info && (info->flags & CAMEL_MESSAGE_FOLDER_FLAGGED)) - return TRUE; + for (i = 0; i < max && !found; i++) { + info = (CamelImapMessageInfo *)camel_folder_summary_index (summary, i); + if (info) { + found = info->info.flags & CAMEL_MESSAGE_FOLDER_FLAGGED; + camel_message_info_free(info); + } } return FALSE; diff --git a/camel/providers/imap/camel-imap-summary.c b/camel/providers/imap/camel-imap-summary.c index 6251f8b85b..3e1d024ab4 100644 --- a/camel/providers/imap/camel-imap-summary.c +++ b/camel/providers/imap/camel-imap-summary.c @@ -71,6 +71,21 @@ camel_imap_summary_get_type (void) return type; } +static CamelMessageInfo * +imap_message_info_clone(CamelFolderSummary *s, const CamelMessageInfo *mi) +{ + CamelImapMessageInfo *to; + const CamelImapMessageInfo *from = (const CamelImapMessageInfo *)mi; + + to = (CamelImapMessageInfo *)camel_imap_summary_parent->message_info_clone(s, mi); + to->server_flags = from->server_flags; + + /* FIXME: parent clone should do this */ + to->info.content = camel_folder_summary_content_info_new(s); + + return (CamelMessageInfo *)to; +} + static void camel_imap_summary_class_init (CamelImapSummaryClass *klass) { @@ -78,6 +93,8 @@ camel_imap_summary_class_init (CamelImapSummaryClass *klass) camel_imap_summary_parent = CAMEL_FOLDER_SUMMARY_CLASS (camel_type_get_global_classfuncs (camel_folder_summary_get_type())); + cfs_class->message_info_clone = imap_message_info_clone; + cfs_class->summary_header_load = summary_header_load; cfs_class->summary_header_save = summary_header_save; cfs_class->message_info_load = message_info_load; @@ -98,6 +115,7 @@ camel_imap_summary_init (CamelImapSummary *obj) /** * camel_imap_summary_new: + * @folder: Parent folder. * @filename: the file to store the summary in. * * This will create a new CamelImapSummary object and read in the @@ -106,10 +124,11 @@ camel_imap_summary_init (CamelImapSummary *obj) * Return value: A new CamelImapSummary object. **/ CamelFolderSummary * -camel_imap_summary_new (const char *filename) +camel_imap_summary_new (struct _CamelFolder *folder, const char *filename) { - CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY ( - camel_object_new (camel_imap_summary_get_type ())); + CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (camel_object_new (camel_imap_summary_get_type ())); + + summary->folder = folder; camel_folder_summary_set_build_content (summary, TRUE); camel_folder_summary_set_filename (summary, filename); @@ -177,7 +196,7 @@ message_info_load (CamelFolderSummary *s, FILE *in) return info; error: - camel_folder_summary_info_free (s, info); + camel_message_info_free(info); return NULL; } @@ -218,52 +237,40 @@ camel_imap_summary_add_offline (CamelFolderSummary *summary, const char *uid, CamelMimeMessage *message, const CamelMessageInfo *info) { - CamelMessageInfo *mi; - CamelFlag *flag; - CamelTag *tag; + CamelImapMessageInfo *mi; + const CamelFlag *flag; + const CamelTag *tag; /* Create summary entry */ - mi = camel_folder_summary_info_new_from_message (summary, message); + mi = (CamelImapMessageInfo *)camel_folder_summary_info_new_from_message (summary, message); /* Copy flags 'n' tags */ - mi->flags = info->flags; - flag = info->user_flags; + mi->info.flags = camel_message_info_flags(info); + + flag = camel_message_info_user_flags(info); while (flag) { - camel_flag_set (&mi->user_flags, flag->name, TRUE); + camel_message_info_set_user_flag((CamelMessageInfo *)mi, flag->name, TRUE); flag = flag->next; } - tag = info->user_tags; + tag = camel_message_info_user_tags(info); while (tag) { - camel_tag_set (&mi->user_tags, tag->name, tag->value); + camel_message_info_set_user_tag((CamelMessageInfo *)mi, tag->name, tag->value); tag = tag->next; } - mi->size = info->size; + mi->info.size = camel_message_info_size(info); + mi->info.uid = g_strdup (uid); - /* Set uid and add to summary */ - camel_message_info_set_uid (mi, g_strdup (uid)); - camel_folder_summary_add (summary, mi); + camel_folder_summary_add (summary, (CamelMessageInfo *)mi); } void camel_imap_summary_add_offline_uncached (CamelFolderSummary *summary, const char *uid, const CamelMessageInfo *info) { - CamelMessageInfo *mi; - CamelMessageContentInfo *ci; - - /* Create summary entry */ - mi = camel_folder_summary_info_new (summary); - ci = camel_folder_summary_content_info_new (summary); - - camel_message_info_dup_to (info, mi); - mi->content = ci; - - /* copy our private fields */ - ((CamelImapMessageInfo *)mi)->server_flags = - ((CamelImapMessageInfo *)info)->server_flags; + CamelImapMessageInfo *mi; - /* Set uid and add to summary */ - camel_message_info_set_uid (mi, g_strdup (uid)); - camel_folder_summary_add (summary, mi); + mi = camel_message_info_clone(info); + mi->info.uid = g_strdup(uid); + camel_folder_summary_add (summary, (CamelMessageInfo *)mi); } diff --git a/camel/providers/imap/camel-imap-summary.h b/camel/providers/imap/camel-imap-summary.h index e7402aac84..04fb9b829a 100644 --- a/camel/providers/imap/camel-imap-summary.h +++ b/camel/providers/imap/camel-imap-summary.h @@ -47,7 +47,7 @@ typedef struct _CamelImapMessageContentInfo { } CamelImapMessageContentInfo; typedef struct _CamelImapMessageInfo { - CamelMessageInfo info; + CamelMessageInfoBase info; guint32 server_flags; } CamelImapMessageInfo; @@ -65,7 +65,7 @@ struct _CamelImapSummaryClass { }; CamelType camel_imap_summary_get_type (void); -CamelFolderSummary *camel_imap_summary_new (const char *filename); +CamelFolderSummary *camel_imap_summary_new (struct _CamelFolder *folder, const char *filename); void camel_imap_summary_add_offline (CamelFolderSummary *summary, const char *uid, diff --git a/camel/providers/imap/camel-imap-utils.c b/camel/providers/imap/camel-imap-utils.c index ca94c180ec..a557f7fcae 100644 --- a/camel/providers/imap/camel-imap-utils.c +++ b/camel/providers/imap/camel-imap-utils.c @@ -1061,7 +1061,7 @@ get_summary_uid_numeric (CamelFolderSummary *summary, int index) info = camel_folder_summary_index (summary, index); uid = strtoul (camel_message_info_uid (info), NULL, 10); - camel_folder_summary_info_free (summary, info); + camel_message_info_free(info); return uid; } |