sync with sylpheed 0.7.1cvs1
[claws.git] / src / procmsg.c
index 94142f90763d097d38d2ccf2e8dbb0c0a7357510..b1ceec61f5cfb6cc2f0db2e55494ec3a5847ad6a 100644 (file)
@@ -445,7 +445,7 @@ static GHashTable *procmsg_read_mark_file(const gchar *folder)
        mark_table = g_hash_table_new(NULL, g_direct_equal);
 
        while (fread(&num, sizeof(num), 1, fp) == 1) {
-               if (fread(&perm_flags, sizeof(flags), 1, fp) != 1) break;
+               if (fread(&perm_flags, sizeof(perm_flags), 1, fp) != 1) break;
 
                flags = g_new0(MsgFlags, 1);
                flags->perm_flags = perm_flags;
@@ -710,6 +710,12 @@ FILE *procmsg_open_message(MsgInfo *msginfo)
        file = procmsg_get_message_file_path(msginfo);
        g_return_val_if_fail(file != NULL, NULL);
 
+       if (!is_file_exist(file)) {
+               g_free(file);
+               file = procmsg_get_message_file(msginfo);
+               g_return_val_if_fail(file != NULL, NULL);
+       }
+
        if ((fp = fopen(file, "r")) == NULL) {
                FILE_OP_ERROR(file, "fopen");
                g_free(file);
@@ -750,7 +756,8 @@ void procmsg_empty_trash(void)
 
        for (cur = folder_get_list(); cur != NULL; cur = cur->next) {
                trash = FOLDER(cur->data)->trash;
-               if (trash) folder_item_remove_all_msg(trash);
+               if (trash && trash->total > 0)
+                       folder_item_remove_all_msg(trash);
        }
 }
 
@@ -1071,23 +1078,24 @@ gint procmsg_send_message_queue(const gchar *file)
                                mailval = send_message_smtp(&tmp_ac, to_list, fp);
                        }
                }
+               if (mailval < 0) {
+                       alertpanel_error(_("Error occurred while sending the message to %s ."),
+                                 mailac ? mailac->smtp_server : smtpserver);
+               }
        }
 
-       if(newsgroup_list) {
+       if(newsgroup_list && (newsval == 0)) {
                Folder *folder;
 
                debug_print(_("Sending message by news\n"));
 
                folder = FOLDER(newsac->folder);
 
-               if(newsval == 0) {
-                       newsval = news_post(folder, tmp);
-                       if (newsval < 0) {
-                               alertpanel_error(_("Error occurred while posting the message to %s ."),
-                                         newsac->nntp_server);
-                       }
-               }
-
+               newsval = news_post(folder, tmp);
+               if (newsval < 0) {
+                       alertpanel_error(_("Error occurred while posting the message to %s ."),
+                                 newsac->nntp_server);
+               }
        }
 
        /* save message to outbox */