2005-08-10 [colin] 1.9.13cvs31
[claws.git] / src / procmsg.c
index 45f85c8cee6b3d1c83dbe8ee12099c53cd5a6bba..16ff841327c8d63196b89fabd80f3145cd8958c1 100644 (file)
@@ -670,8 +670,13 @@ void procmsg_empty_all_trash(void)
        GList *cur;
 
        for (cur = folder_get_list(); cur != NULL; cur = cur->next) {
-               trash = FOLDER(cur->data)->trash;
+               Folder *folder = FOLDER(cur->data);
+               trash = folder->trash;
                procmsg_empty_trash(trash);
+               if (folder->account && folder->account->set_trash_folder && 
+                   folder_find_item_from_identifier(folder->account->trash_folder))
+                       procmsg_empty_trash(
+                               folder_find_item_from_identifier(folder->account->trash_folder));
        }
 }
 
@@ -1856,6 +1861,8 @@ gboolean procmsg_msginfo_filter(MsgInfo *msginfo)
        if((filtering_rules != NULL) &&
           filter_message_by_msginfo(filtering_rules, msginfo))
                return TRUE;
+               
+       hooks_invoke(MAIL_POSTFILTERING_HOOKLIST, msginfo);
 
        return FALSE;
 }
@@ -1879,16 +1886,31 @@ MsgInfo *procmsg_msginfo_new_from_mimeinfo(MsgInfo *src_msginfo, MimeInfo *mimei
                mimeinfo->content = MIMECONTENT_FILE;
                mimeinfo->data.filename = g_strdup(tmpfile);
                g_free(tmpfile);
-       }
-
-       tmp_msginfo = procheader_parse_file(mimeinfo->data.filename,
-                               flags, TRUE, FALSE);
-
-       if (tmp_msginfo != NULL) {
-               tmp_msginfo->folder = src_msginfo->folder;
-               tmp_msginfo->plaintext_file = g_strdup(mimeinfo->data.filename);
+               tmp_msginfo = procheader_parse_file(mimeinfo->data.filename,
+                                       flags, TRUE, FALSE);
+               if (tmp_msginfo != NULL) {
+                       tmp_msginfo->folder = src_msginfo->folder;
+                       tmp_msginfo->plaintext_file = g_strdup(mimeinfo->data.filename);
+               } else {
+                       g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
+               }
        } else {
-               g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
+               gchar *tmpfile = get_tmp_file();
+               FILE *fp = fopen(tmpfile, "wb");
+               if (fp && procmime_write_message_rfc822(mimeinfo, fp) >= 0) {
+                       tmp_msginfo = procheader_parse_file(
+                               tmpfile, flags, TRUE, FALSE);
+               }
+               if (fp)
+                       fclose(fp);
+               if (tmp_msginfo != NULL) {
+                       tmp_msginfo->folder = src_msginfo->folder;
+                       tmp_msginfo->plaintext_file = g_strdup(tmpfile);
+               } else {
+                       g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
+               }
+               g_free(tmpfile);
+               
        }
        
        return tmp_msginfo;