aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog6
-rw-r--r--camel/providers/mbox/camel-mbox-folder.c4
-rw-r--r--camel/providers/mbox/camel-mbox-summary.c18
-rw-r--r--camel/providers/vee/camel-vee-folder.c2
4 files changed, 26 insertions, 4 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index bdb46958bc..29a64e858c 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,5 +1,11 @@
2000-05-29 Not Zed <NotZed@HelixCode.com>
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_expunge): Make sure we copy messages which are
+ still intact to the new folder.
+ (camel_mbox_summary_expunge): Update the frompos as well when
+ moving the content.
+
* providers/vee/camel-vee-folder.c (vee_folder_build): Check the
searched folder is open before trying to search it.
(message_changed): Track changes to the source message in the
diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c
index ccf57f02b7..de7a7764ba 100644
--- a/camel/providers/mbox/camel-mbox-folder.c
+++ b/camel/providers/mbox/camel-mbox-folder.c
@@ -778,7 +778,9 @@ mbox_get_message_by_uid (CamelFolder *folder, const gchar *uid, CamelException *
}
if (camel_mime_parser_tell_start_from(parser) != info->frompos) {
- g_warning("Summary doesn't match the folder contents! eek!");
+ g_warning("Summary doesn't match the folder contents! eek!\n"
+ " expecting offset %d got %d", info->frompos,
+ camel_mime_parser_tell_start_from(parser));
errno = EINVAL;
goto fail;
}
diff --git a/camel/providers/mbox/camel-mbox-summary.c b/camel/providers/mbox/camel-mbox-summary.c
index 46b180e999..4ee38b24fc 100644
--- a/camel/providers/mbox/camel-mbox-summary.c
+++ b/camel/providers/mbox/camel-mbox-summary.c
@@ -300,7 +300,7 @@ summary_rebuild(CamelMboxSummary *mbs, off_t offset)
gtk_object_unref((GtkObject *)mp);
/* end of file - no content? */
printf("We radn out of file?\n");
- return 0;
+ return -1;
}
}
@@ -663,7 +663,8 @@ camel_mbox_summary_expunge(CamelMboxSummary *mbs)
info->info.content->pos,
info->info.content->endpos,
info->info.content->bodypos));
- if (copy_block(fd, fdout, info->info.content->bodypos, info->info.content->endpos - info->info.content->bodypos) == -1) {
+ if (copy_block(fd, fdout, info->info.content->bodypos,
+ info->info.content->endpos - info->info.content->bodypos) == -1) {
g_warning("Cannot copy data to output fd");
goto error;
}
@@ -675,9 +676,20 @@ camel_mbox_summary_expunge(CamelMboxSummary *mbs)
camel_mime_parser_drop_step(mp);
camel_mime_parser_drop_step(mp);
} else {
- d(printf("Nothing to do for this message\n"));
+ if (!quick) {
+ if (copy_block(fd, fdout, info->frompos,
+ info->info.content->endpos - info->frompos) == -1) {
+ g_warning("Cannot copy data to output fd");
+ goto error;
+ }
+ /* update from pos here? */
+ info->frompos += offset;
+ } else {
+ d(printf("Nothing to do for this message\n"));
+ }
}
if (!quick && info!=NULL && offset!=0) {
+ printf("offsetting content: %d\n", offset);
camel_folder_summary_offset_content(info->info.content, offset);
d(printf("pos = %d, endpos = %d, bodypos = %d\n",
info->info.content->pos,
diff --git a/camel/providers/vee/camel-vee-folder.c b/camel/providers/vee/camel-vee-folder.c
index f2a28c7bb5..0d6abf17d2 100644
--- a/camel/providers/vee/camel-vee-folder.c
+++ b/camel/providers/vee/camel-vee-folder.c
@@ -173,6 +173,8 @@ folder_changed(CamelFolder *sub, int type, CamelVeeFolder *vf)
{
CamelException *ex;
+ printf("subfolder changed!!, re-searching\n");
+
ex = camel_exception_new();
vee_folder_build_folder(vf, sub, ex);
camel_exception_free(ex);