aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/mbox
diff options
context:
space:
mode:
authorMichael Zucci <zucchi@src.gnome.org>2000-05-12 04:46:13 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-05-12 04:46:13 +0800
commitcb13084bc24c04b16af88744f6eb67ae7f779018 (patch)
treecaf9b9f3349d79de9adb45f0d54aadabae298ad0 /camel/providers/mbox
parentd41602b8ecf24d2c99ce52a4f3fd1ed6a6300d34 (diff)
downloadgsoc2013-evolution-cb13084bc24c04b16af88744f6eb67ae7f779018.tar.gz
gsoc2013-evolution-cb13084bc24c04b16af88744f6eb67ae7f779018.tar.zst
gsoc2013-evolution-cb13084bc24c04b16af88744f6eb67ae7f779018.zip
> * providers/mbox/camel-mbox-folder.c (message_changed): Indicate
> the summary changed also. > > (camel_mbox_summary_update): Also save summary when done. > (camel_mbox_summary_expunge): Unindex items when deleting them. > (camel_mbox_summary_expunge): Save the index as well as the > summary. > (camel_folder_summary_touch): New function, indicate the summary > info changed. > (camel_folder_summary_remove): Dirty here. svn path=/trunk/; revision=2994
Diffstat (limited to 'camel/providers/mbox')
-rw-r--r--camel/providers/mbox/camel-mbox-folder.c6
-rw-r--r--camel/providers/mbox/camel-mbox-summary.c21
2 files changed, 24 insertions, 3 deletions
diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c
index 05d00c608e..3403271e40 100644
--- a/camel/providers/mbox/camel-mbox-folder.c
+++ b/camel/providers/mbox/camel-mbox-folder.c
@@ -745,6 +745,7 @@ mbox_append_message (CamelFolder *folder, CamelMimeMessage *message, CamelExcept
filter_from = (CamelMimeFilter *)camel_mime_filter_from_new();
camel_stream_filter_add((CamelStreamFilter *)filter_stream, filter_from);
camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), filter_stream, ex);
+#warning "we still need stream_close() for this"
if (!camel_exception_is_set (ex))
camel_stream_flush (filter_stream, ex);
@@ -833,9 +834,10 @@ message_changed(CamelMimeMessage *m, int type, CamelMboxFolder *mf)
switch (type) {
case MESSAGE_FLAGS_CHANGED:
info = camel_folder_summary_uid((CamelFolderSummary *)mf->summary, m->message_uid);
- if (info)
+ if (info) {
info->flags = m->flags | CAMEL_MESSAGE_FOLDER_FLAGGED;
- else
+ camel_folder_summary_touch((CamelFolderSummary *)mf->summary);
+ } else
g_warning("Message changed event on message not in summary: %s", m->message_uid);
break;
default:
diff --git a/camel/providers/mbox/camel-mbox-summary.c b/camel/providers/mbox/camel-mbox-summary.c
index ead844ee66..56ff1cb198 100644
--- a/camel/providers/mbox/camel-mbox-summary.c
+++ b/camel/providers/mbox/camel-mbox-summary.c
@@ -323,8 +323,23 @@ summary_rebuild(CamelMboxSummary *mbs, off_t offset)
int
camel_mbox_summary_update(CamelMboxSummary *mbs, off_t offset)
{
+ int ret;
+
mbs->index_force = FALSE;
- return summary_rebuild(mbs, offset);
+ ret = summary_rebuild(mbs, offset);
+
+#if 0
+#warning "Saving full summary and index after every summarisation is slow ..."
+ if (ret != -1) {
+ if (camel_folder_summary_save((CamelFolderSummary *)mbs) == -1)
+ g_warning("Could not save summary: %s", strerror(errno));
+ printf("summary saved\n");
+ if (mbs->index)
+ ibex_save(mbs->index);
+ printf("ibex saved\n");
+ }
+#endif
+ return ret;
}
int
@@ -581,6 +596,8 @@ camel_mbox_summary_expunge(CamelMboxSummary *mbs)
g_assert(!quick);
offset -= (info->info.content->endpos - info->frompos);
+ if (mbs->index)
+ ibex_unindex(mbs->index, info->info.uid);
camel_folder_summary_remove(s, (CamelMessageInfo *)info);
count--;
i--;
@@ -690,6 +707,8 @@ camel_mbox_summary_expunge(CamelMboxSummary *mbs)
s->time = st.st_mtime;
mbs->folder_size = st.st_size;
camel_folder_summary_save(s);
+ if (mbs->index)
+ ibex_save(mbs->index);
}
gtk_object_unref((GtkObject *)mp);