diff options
author | Dan Winship <danw@src.gnome.org> | 2000-07-14 08:41:01 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2000-07-14 08:41:01 +0800 |
commit | cdacb644902c2f485c691d4b31b9a7e44438375b (patch) | |
tree | 04cb34edf08bb503d175c238c7c8080df22019e4 /camel/providers | |
parent | db5378100389017aed128c0aefbb9029ab1e8014 (diff) | |
download | gsoc2013-evolution-cdacb644902c2f485c691d4b31b9a7e44438375b.tar gsoc2013-evolution-cdacb644902c2f485c691d4b31b9a7e44438375b.tar.gz gsoc2013-evolution-cdacb644902c2f485c691d4b31b9a7e44438375b.tar.bz2 gsoc2013-evolution-cdacb644902c2f485c691d4b31b9a7e44438375b.tar.lz gsoc2013-evolution-cdacb644902c2f485c691d4b31b9a7e44438375b.tar.xz gsoc2013-evolution-cdacb644902c2f485c691d4b31b9a7e44438375b.tar.zst gsoc2013-evolution-cdacb644902c2f485c691d4b31b9a7e44438375b.zip |
If the summary is for a smaller mbox, and rebuilding from the last-known
* providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
If the summary is for a smaller mbox, and rebuilding from the
last-known end position fails, try rebuilding from the beginning.
Deals with the case where the user edits the mbox and makes it
bigger, without adding new messages.
svn path=/trunk/; revision=4163
Diffstat (limited to 'camel/providers')
-rw-r--r-- | camel/providers/mbox/camel-mbox-summary.c | 15 |
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); } |