aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/mbox/camel-mbox-summary.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers/mbox/camel-mbox-summary.c')
-rw-r--r--camel/providers/mbox/camel-mbox-summary.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/camel/providers/mbox/camel-mbox-summary.c b/camel/providers/mbox/camel-mbox-summary.c
index 5af28a63e1..4c826dbc28 100644
--- a/camel/providers/mbox/camel-mbox-summary.c
+++ b/camel/providers/mbox/camel-mbox-summary.c
@@ -383,8 +383,6 @@ camel_mbox_summary_load (CamelMboxSummary *mbs, int forceindex)
}
if (forceindex || camel_folder_summary_load (s) == -1) {
- printf ("REBUILDING SUMMARY: %s\n",
- forceindex ? "Summary non-existent." : "Summary load failed.");
camel_folder_summary_clear (s);
ret = summary_rebuild (mbs, 0);
} else {
@@ -407,25 +405,26 @@ camel_mbox_summary_load (CamelMboxSummary *mbs, int forceindex)
if (st.st_size == mbs->folder_size && st.st_mtime == s->time) {
if (minstart < st.st_size) {
/* FIXME: Only clear the messages and reindex from this point forward */
- printf ("REBUILDING SUMMARY: Index file is incomplete.\n");
camel_folder_summary_clear (s);
ret = summary_rebuild (mbs, 0);
}
} else {
if (mbs->folder_size < st.st_size) {
- printf ("REBUILDING SUMMARY: Summary is for a smaller mbox\n");
if (minstart < mbs->folder_size) {
/* FIXME: only make it rebuild as necessary */
camel_folder_summary_clear (s);
ret = summary_rebuild (mbs, 0);
} else {
ret = summary_rebuild (mbs, mbs->folder_size);
+ /* If that fails, it might be because a message was changed
+ * rather than appended... so try again from the beginning.
+ */
+ if (ret == -1) {
+ camel_folder_summary_clear (s);
+ ret = summary_rebuild (mbs, 0);
+ }
}
} else {
- if (mbs->folder_size > st.st_size)
- printf ("REBUILDING_SUMMARY: Summary is for a bigger mbox\n");
- else
- printf ("REBUILDING SUMMARY: Summary is for an older mbox\n");
camel_folder_summary_clear (s);
ret = summary_rebuild (mbs, 0);
}