0.8.11claws83
[claws.git] / src / mbox.c
index 59cae3b1f81d30b059cadd90356834c8fc62d9f1..19e94dec4e9e3723ec0e6929f6893806f9e4edac 100644 (file)
@@ -36,7 +36,6 @@
 #include "mbox.h"
 #include "procmsg.h"
 #include "folder.h"
-#include "filter.h"
 #include "prefs_common.h"
 #include "prefs_account.h"
 #include "account.h"
@@ -48,7 +47,7 @@
 #define FPUTS_TO_TMP_ABORT_IF_FAIL(s) \
 { \
        if (fputs(s, tmp_fp) == EOF) { \
-               g_warning(_("can't write to temporary file\n")); \
+               g_warning("can't write to temporary file\n"); \
                fclose(tmp_fp); \
                fclose(mbox_fp); \
                unlink(tmp_file); \
@@ -63,6 +62,7 @@ gint proc_mbox(FolderItem *dest, const gchar *mbox)
        gchar buf[MSGBUFSIZE], from_line[MSGBUFSIZE];
        gchar *tmp_file;
        gint msgs = 0;
+       MsgInfo *msginfo;
 
        g_return_val_if_fail(dest != NULL, -1);
        g_return_val_if_fail(mbox != NULL, -1);
@@ -77,38 +77,39 @@ gint proc_mbox(FolderItem *dest, const gchar *mbox)
        /* ignore empty lines on the head */
        do {
                if (fgets(buf, sizeof(buf), mbox_fp) == NULL) {
-                       g_warning(_("can't read mbox file.\n"));
+                       g_warning("can't read mbox file.\n");
                        fclose(mbox_fp);
                        return -1;
                }
        } while (buf[0] == '\n' || buf[0] == '\r');
 
        if (strncmp(buf, "From ", 5) != 0) {
-               g_warning(_("invalid mbox format: %s\n"), mbox);
+               g_warning("invalid mbox format: %s\n", mbox);
                fclose(mbox_fp);
                return -1;
        }
 
        strcpy(from_line, buf);
        if (fgets(buf, sizeof(buf), mbox_fp) == NULL) {
-               g_warning(_("malformed mbox: %s\n"), mbox);
+               g_warning("malformed mbox: %s\n", mbox);
                fclose(mbox_fp);
                return -1;
        }
 
        tmp_file = get_tmp_file();
 
+       folder_item_update_freeze();
+       
        do {
                FILE *tmp_fp;
                FolderItem *dropfolder;
                gint empty_line;
-               gint val;
                gboolean is_next_msg = FALSE;
                gint msgnum;
 
                if ((tmp_fp = fopen(tmp_file, "wb")) == NULL) {
                        FILE_OP_ERROR(tmp_file, "fopen");
-                       g_warning(_("can't open temporary file\n"));
+                       g_warning("can't open temporary file\n");
                        fclose(mbox_fp);
                        g_free(tmp_file);
                        return -1;
@@ -161,7 +162,7 @@ gint proc_mbox(FolderItem *dest, const gchar *mbox)
                                        is_next_msg = TRUE;
                                        break;
                                } else {
-                                       g_warning(_("unescaped From found:\n%s"),
+                                       g_warning("unescaped From found:\n%s",
                                                  from_line);
                                        break;
                                }
@@ -196,25 +197,14 @@ gint proc_mbox(FolderItem *dest, const gchar *mbox)
 
                if (fclose(tmp_fp) == EOF) {
                        FILE_OP_ERROR(tmp_file, "fclose");
-                       g_warning(_("can't write to temporary file\n"));
+                       g_warning("can't write to temporary file\n");
                        fclose(mbox_fp);
                        unlink(tmp_file);
                        g_free(tmp_file);
                        return -1;
                }
 
-               if (global_processing == NULL) {
-                       /* old filtering */
-                       dropfolder = filter_get_dest_folder
-                               (prefs_common.fltlist, tmp_file);
-                       if (!dropfolder ||
-                           !strcmp(dropfolder->path, FILTER_NOT_RECEIVE))
-                               dropfolder = dest;
-               } else {
-                       /* CLAWS: new filtering */
-                       dropfolder = folder_get_default_processing();
-               }
-
+               dropfolder = folder_get_default_processing();
                        
                if ((msgnum = folder_item_add_msg(dropfolder, tmp_file, TRUE)) < 0) {
                        fclose(mbox_fp);
@@ -223,15 +213,16 @@ gint proc_mbox(FolderItem *dest, const gchar *mbox)
                        return -1;
                }
 
-               if (global_processing) {
-                       /* CLAWS: new filtering */
-                       filter_message(global_processing, dest,
-                                      msgnum);
-               }
+               msginfo = folder_item_get_msginfo(dropfolder, msgnum);
+               if (!procmsg_msginfo_filter(msginfo))
+                       folder_item_move_msg(dest, msginfo);
+               procmsg_msginfo_free(msginfo);
 
                msgs++;
        } while (from_line[0] != '\0');
 
+       folder_item_update_thaw();
+       
        g_free(tmp_file);
        fclose(mbox_fp);
        debug_print("%d messages found.\n", msgs);
@@ -251,8 +242,8 @@ gint lock_mbox(const gchar *base, LockType type)
                lockfile = g_strdup_printf("%s.%d", base, getpid());
                if ((lockfp = fopen(lockfile, "wb")) == NULL) {
                        FILE_OP_ERROR(lockfile, "fopen");
-                       g_warning(_("can't create lock file %s\n"), lockfile);
-                       g_warning(_("use 'flock' instead of 'file' if possible.\n"));
+                       g_warning("can't create lock file %s\n", lockfile);
+                       g_warning("use 'flock' instead of 'file' if possible.\n");
                        g_free(lockfile);
                        return -1;
                }
@@ -264,14 +255,14 @@ gint lock_mbox(const gchar *base, LockType type)
                while (link(lockfile, locklink) < 0) {
                        FILE_OP_ERROR(lockfile, "link");
                        if (retry >= 5) {
-                               g_warning(_("can't create %s\n"), lockfile);
+                               g_warning("can't create %s\n", lockfile);
                                unlink(lockfile);
                                g_free(lockfile);
                                return -1;
                        }
                        if (retry == 0)
-                               g_warning(_("mailbox is owned by another"
-                                           " process, waiting...\n"));
+                               g_warning("mailbox is owned by another"
+                                           " process, waiting...\n");
                        retry++;
                        sleep(5);
                }
@@ -299,14 +290,14 @@ gint lock_mbox(const gchar *base, LockType type)
                {
 #endif
 #endif /* HAVE_FLOCK */
-                       g_warning(_("can't lock %s\n"), base);
+                       g_warning("can't lock %s\n", base);
                        if (close(lockfd) < 0)
                                perror("close");
                        return -1;
                }
                retval = lockfd;
        } else {
-               g_warning(_("invalid lock type\n"));
+               g_warning("invalid lock type\n");
                return -1;
        }
 
@@ -339,7 +330,7 @@ gint unlock_mbox(const gchar *base, gint fd, LockType type)
                {
 #endif
 #endif /* HAVE_FLOCK */
-                       g_warning(_("can't unlock %s\n"), base);
+                       g_warning("can't unlock %s\n", base);
                        if (close(fd) < 0)
                                perror("close");
                        return -1;
@@ -353,7 +344,7 @@ gint unlock_mbox(const gchar *base, gint fd, LockType type)
                return 0;
        }
 
-       g_warning(_("invalid lock type\n"));
+       g_warning("invalid lock type\n");
        return -1;
 }
 
@@ -370,7 +361,7 @@ void empty_mbox(const gchar *mbox)
                FILE_OP_ERROR(mbox, "truncate");
                if ((fp = fopen(mbox, "wb")) == NULL) {
                        FILE_OP_ERROR(mbox, "fopen");
-                       g_warning(_("can't truncate mailbox to zero.\n"));
+                       g_warning("can't truncate mailbox to zero.\n");
                        return;
                }
                fclose(fp);