evolution r36882 - branches/gnome-2-24/plugins/bogo-junk-plugin



Author: sragavan
Date: Mon Dec 15 06:41:04 2008
New Revision: 36882
URL: http://svn.gnome.org/viewvc/evolution?rev=36882&view=rev

Log:
2008-12-15  Srinivasa Ragavan  <sragavan novell com>

	* Makefile.am:
	* bf-junk-filter.c: (init_db), (pipe_to_bogofilter): Init the
	Bogofilter if it wasn't. Say that Evolution's welcome message is not
	junk.


Modified:
   branches/gnome-2-24/plugins/bogo-junk-plugin/ChangeLog
   branches/gnome-2-24/plugins/bogo-junk-plugin/Makefile.am
   branches/gnome-2-24/plugins/bogo-junk-plugin/bf-junk-filter.c

Modified: branches/gnome-2-24/plugins/bogo-junk-plugin/Makefile.am
==============================================================================
--- branches/gnome-2-24/plugins/bogo-junk-plugin/Makefile.am	(original)
+++ branches/gnome-2-24/plugins/bogo-junk-plugin/Makefile.am	Mon Dec 15 06:41:04 2008
@@ -1,5 +1,6 @@
 INCLUDES =						\
 	-I$(top_srcdir)					\
+	-DWELCOME_MESSAGE=\""$(privdatadir)/default/C/mail/local/Inbox"\" 	\
 	$(EVOLUTION_MAIL_CFLAGS)
 
 @EVO_PLUGIN_RULE@

Modified: branches/gnome-2-24/plugins/bogo-junk-plugin/bf-junk-filter.c
==============================================================================
--- branches/gnome-2-24/plugins/bogo-junk-plugin/bf-junk-filter.c	(original)
+++ branches/gnome-2-24/plugins/bogo-junk-plugin/bf-junk-filter.c	Mon Dec 15 06:41:04 2008
@@ -40,6 +40,8 @@
 #include "mail/em-config.h"
 #include <mail/em-junk-hook.h>
 #include <camel/camel-data-wrapper.h>
+#include <camel/camel-mime-message.h>
+#include <camel/camel-mime-parser.h>
 #include <camel/camel-stream-fs.h>
 #include <camel/camel-debug.h>
 #include <gconf/gconf-client.h>
@@ -69,6 +71,7 @@
 void em_junk_bf_report_junk (EPlugin *ep, EMJunkHookTarget *target);
 void em_junk_bf_report_non_junk (EPlugin *ep, EMJunkHookTarget *target);
 void em_junk_bf_commit_reports (EPlugin *ep, EMJunkHookTarget *target);
+static gint pipe_to_bogofilter (CamelMimeMessage *msg, gchar **argv, GError **error);
 
 /* eplugin stuff */
 int e_plugin_lib_enable (EPluginLib *ep, int enable);
@@ -78,6 +81,37 @@
 
 static gboolean em_junk_bf_unicode = TRUE;
 
+static void
+init_db ()
+{
+	CamelStream *stream = camel_stream_fs_new_with_name (WELCOME_MESSAGE, O_RDONLY, 0);
+	CamelMimeParser *parser = camel_mime_parser_new ();
+	CamelMimeMessage *msg = camel_mime_message_new ();
+	gchar *argv[] = {
+		em_junk_bf_binary,
+		"-n",
+		NULL,
+		NULL
+	};
+
+	camel_mime_parser_init_with_stream (parser, stream);
+	camel_mime_parser_scan_from (parser, FALSE);
+	camel_object_unref (stream);
+	
+	camel_mime_part_construct_from_parser ((CamelMimePart *) msg, parser);
+	camel_object_unref (parser);
+
+	d(fprintf (stderr, "Initing the bogofilter DB with Welcome message\n"));
+
+	if (em_junk_bf_unicode) {
+		argv[2] = "--unicode=yes";
+	}
+
+	pipe_to_bogofilter (msg, argv, NULL);	
+	camel_object_unref (msg);
+
+}
+
 static gint
 pipe_to_bogofilter (CamelMimeMessage *msg, gchar **argv, GError **error)
 {
@@ -88,7 +122,9 @@
 	gint status;
 	gint waitres;
 	gint res;
+	static gboolean only_once = FALSE;
 
+retry:	
 	if (camel_debug_start ("junk")) {
 		int i;
 
@@ -153,8 +189,17 @@
 		res = BOGOFILTER_ERROR;
 	}
 
-	if (res < 0 || res > 2)
+	if (res < 0 || res > 2) {
+		if (!only_once) {
+			/* Create wordlist.db */
+			only_once = TRUE;
+			init_db();
+
+			goto retry;
+		}
 		g_set_error (error, EM_JUNK_ERROR, res, _("Pipe to Bogofilter failed, error code: %d."), res);
+	
+	}
 
 	return res;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]