Make sure we copy messages which are still intact to the new folder.
authorNot Zed <NotZed@HelixCode.com>
Tue, 30 May 2000 00:50:23 +0000 (00:50 +0000)
committerMichael Zucci <zucchi@src.gnome.org>
Tue, 30 May 2000 00:50:23 +0000 (00:50 +0000)
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.

camel/ChangeLog
camel/providers/mbox/camel-mbox-folder.c
camel/providers/mbox/camel-mbox-summary.c
camel/providers/vee/camel-vee-folder.c

index bdb4695..29a64e8 100644 (file)
@@ -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
index ccf57f0..de7a776 100644 (file)
@@ -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;
        }
index 46b180e..4ee38b2 100644 (file)
@@ -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,
index f2a28c7..0d6abf1 100644 (file)
@@ -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);