+2001-12-06 [alfons] 0.6.5claws55
+
+ * src/filtering.[ch]
+ * src/inc.c
+ revise filtering a little bit more, and make sure
+ messages are delivered to the appropriate inbox
+ (perhaps set per account)
+
2001-12-06 [paul] 0.6.5claws54
* sync with sylpheed 0.6.5cvs22
MICRO_VERSION=5
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws54
+EXTRA_VERSION=claws55
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl
return FALSE;
}
-void filter_msginfo(GSList * filtering_list, MsgInfo * info,
- GHashTable *folder_table)
+static void filter_msginfo(GSList * filtering_list, FolderItem *inbox,
+ MsgInfo * info, GHashTable *folder_table)
{
GSList *l;
gboolean result;
- FolderItem *inbox;
if (info == NULL) {
g_warning(_("msginfo is not set"));
if (!result) {
gint val;
- inbox = folder_get_default_inbox();
- g_assert(inbox);
-
if (folder_item_move_msg(inbox, info) == -1) {
debug_print(_("*** Could not drop message in inbox; still in .processing\n"));
return;
}
}
-void filter_message(GSList * filtering_list, FolderItem * item,
+void filter_message(GSList *filtering_list, FolderItem *inbox,
gint msgnum, GHashTable *folder_table)
{
- MsgInfo * msginfo;
- gchar * filename;
+ MsgInfo *msginfo;
+ gchar *filename;
MsgFlags msgflags = { 0, 0 };
+ FolderItem *item = folder_get_default_processing();
if (item == NULL) {
g_warning(_("folderitem not set"));
msginfo->folder = item;
msginfo->msgnum = msgnum;
- filter_msginfo(filtering_list, msginfo, folder_table);
+ filter_msginfo(filtering_list, inbox, msginfo, folder_table);
}
gchar *filteringaction_to_string(gchar *dest, gint destlen, FilteringAction *action)
#include "procmsg.h"
struct _FilteringAction {
- gint type;
- gint account_id;
- gchar *destination;
- gint labelcolor;
+ gint type;
+ gint account_id;
+ gchar *destination;
+ gint labelcolor;
};
typedef struct _FilteringAction FilteringAction;
FilteringAction * filteringaction_new(int type, int account_id,
- gchar * destination,
+ gchar *destination,
gint labelcolor);
-void filteringaction_free(FilteringAction * action);
-FilteringAction * filteringaction_parse(gchar ** str);
+void filteringaction_free(FilteringAction *action);
+FilteringAction * filteringaction_parse(gchar **str);
-FilteringProp * filteringprop_new(MatcherList * matchers,
- FilteringAction * action);
-void filteringprop_free(FilteringProp * prop);
+FilteringProp * filteringprop_new(MatcherList *matchers,
+ FilteringAction *action);
+void filteringprop_free(FilteringProp *prop);
-FilteringProp * filteringprop_parse(gchar ** str);
+FilteringProp * filteringprop_parse(gchar **str);
-
-void filter_msginfo(GSList * filtering_list, MsgInfo * info,
- GHashTable *folder_table);
-void filter_msginfo_move_or_delete(GSList * filtering_list, MsgInfo * info,
+void filter_msginfo_move_or_delete(GSList *filtering_list, MsgInfo *info,
GHashTable *folder_table);
-void filter_message(GSList * filtering_list, FolderItem * item,
+void filter_message(GSList *filtering_list, FolderItem *inbox,
gint msgnum, GHashTable *folder_table);
-gchar * filteringaction_to_string(gchar *dest, gint destlen, FilteringAction * action);
+gchar * filteringaction_to_string(gchar *dest, gint destlen, FilteringAction *action);
void prefs_filtering_write_config(void);
void prefs_filtering_read_config(void);
-gchar * filteringprop_to_string(FilteringProp * prop);
+gchar * filteringprop_to_string(FilteringProp *prop);
void prefs_filtering_clear();
-void prefs_filtering_free(GSList * prefs_filtering);
+void prefs_filtering_free(GSList *prefs_filtering);
extern GSList * global_processing;
FolderItem *dropfolder;
gint val;
gint msgnum;
- FolderItem *filtering_folder = folder_get_default_processing();
+ /* get default inbox (perhaps per account) */
if (state->ac_prefs->inbox) {
inbox = folder_find_item_from_path(state->ac_prefs->inbox);
if (!inbox)
} else
dropfolder = inbox;
} else {
- /* new filtering */
- dropfolder = filtering_folder;
+ /* CLAWS: new filtering */
+ dropfolder = folder_get_default_processing();
}
val = GPOINTER_TO_INT(g_hash_table_lookup
GINT_TO_POINTER(1));
}
+ /* add msg file to drop folder */
if ((msgnum = folder_item_add_msg(dropfolder, file, TRUE)) < 0) {
unlink(file);
return -1;
}
+ /* CLAWS: perform filtering actions on dropped message */
if (global_processing != NULL) {
- /* new filtering */
if (state->ac_prefs->filter_on_recv)
- filter_message(global_processing, dropfolder, msgnum,
+ filter_message(global_processing, inbox, msgnum,
state->folder_table);
}