diff options
Diffstat (limited to 'mail')
-rw-r--r-- | mail/ChangeLog | 7 | ||||
-rw-r--r-- | mail/em-junk-filter.c | 50 | ||||
-rw-r--r-- | mail/mail-session.c | 51 | ||||
-rw-r--r-- | mail/mail-session.h | 7 |
4 files changed, 46 insertions, 69 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 6b14bf7821..f95ec64f09 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,10 @@ +2004-02-03 Radek Doulik <rodo@ximian.com> + + * em-junk-filter.c: handle the sa prefs here, have own gconf + client with sa dir added + + * mail-session.c: removed sa prefs + 2004-02-02 Jeffrey Stedfast <fejj@ximian.com> Fix for bug #52941 diff --git a/mail/em-junk-filter.c b/mail/em-junk-filter.c index bdd7213c05..ddb18c245e 100644 --- a/mail/em-junk-filter.c +++ b/mail/em-junk-filter.c @@ -36,9 +36,12 @@ #include "mail-session.h" #include "em-junk-filter.h" +#include <gconf/gconf.h> +#include <gconf/gconf-client.h> + #define d(x) x -static pthread_mutex_t em_junk_sa_test_lock = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t em_junk_sa_init_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t em_junk_sa_report_lock = PTHREAD_MUTEX_INITIALIZER; static const char *em_junk_sa_get_name (void); @@ -64,7 +67,7 @@ static gboolean em_junk_sa_tested = FALSE; static gboolean em_junk_sa_use_spamc = FALSE; static gboolean em_junk_sa_available = FALSE; static int em_junk_sa_spamd_port = -1; - +static GConfClient *em_junk_sa_gconf = NULL; static const char * em_junk_sa_get_name (void) @@ -72,6 +75,24 @@ em_junk_sa_get_name (void) return _("Spamassassin (built-in)"); } +static gboolean +em_junk_sa_get_local_only () +{ + return gconf_client_get_bool (em_junk_sa_gconf, "/apps/evolution/mail/junk/sa/local_only", NULL); +} + +static gboolean +em_junk_sa_get_use_daemon () +{ + return gconf_client_get_bool (em_junk_sa_gconf, "/apps/evolution/mail/junk/sa/use_daemon", NULL); +} + +static int +em_junk_sa_get_daemon_port () +{ + return gconf_client_get_int (em_junk_sa_gconf, "/apps/evolution/mail/junk/sa/daemon_port", NULL); +} + static int pipe_to_sa (CamelMimeMessage *msg, const char *in, char **argv) { @@ -187,7 +208,7 @@ em_junk_sa_test_spamd_running (int port) static void em_junk_sa_test_spamd (void) { - int port = mail_session_get_sa_daemon_port (); + int port = em_junk_sa_get_daemon_port (); int i; char *argv[6] = { "/bin/sh", @@ -228,7 +249,7 @@ em_junk_sa_test_spamd (void) argv[i++] = "--port"; argv[i++] = port_buf; - if (mail_session_get_sa_local_only ()) + if (em_junk_sa_get_local_only ()) argv[i++] = "--local"; argv[i++] = "--daemonize"; @@ -255,10 +276,17 @@ em_junk_sa_test_spamd (void) static gboolean em_junk_sa_is_available (void) { - pthread_mutex_lock (&em_junk_sa_test_lock); + pthread_mutex_lock (&em_junk_sa_init_lock); + + if (!em_junk_sa_gconf) { + em_junk_sa_gconf = gconf_client_get_default(); + gconf_client_add_dir (em_junk_sa_gconf, "/apps/evolution/mail/junk/sa", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + } + if (!em_junk_sa_tested) em_junk_sa_test_spamd (); - pthread_mutex_unlock (&em_junk_sa_test_lock); + + pthread_mutex_unlock (&em_junk_sa_init_lock); return em_junk_sa_available; } @@ -274,7 +302,7 @@ em_junk_sa_check_junk (CamelMimeMessage *msg) if (!em_junk_sa_is_available ()) return FALSE; - if (em_junk_sa_use_spamc && mail_session_get_sa_use_daemon ()) { + if (em_junk_sa_use_spamc && em_junk_sa_get_use_daemon ()) { argv[i++] = "spamc"; argv[i++] = "-c"; if (em_junk_sa_spamd_port != -1) { @@ -286,7 +314,7 @@ em_junk_sa_check_junk (CamelMimeMessage *msg) argv[i++] = "/bin/sh"; argv[i++] = "-c"; - if (mail_session_get_sa_local_only ()) + if (em_junk_sa_get_local_only ()) argv[i++] = "spamassassin --exit-code --local"; else argv[i++] = "spamassassin --exit-code"; @@ -312,7 +340,7 @@ em_junk_sa_report_junk (CamelMimeMessage *msg) d(fprintf (stderr, "em_junk_sa_report_junk\n")); if (em_junk_sa_is_available ()) { - if (mail_session_get_sa_local_only ()) + if (em_junk_sa_get_local_only ()) argv[4] = "--local"; pthread_mutex_lock (&em_junk_sa_report_lock); @@ -336,7 +364,7 @@ em_junk_sa_report_notjunk (CamelMimeMessage *msg) d(fprintf (stderr, "em_junk_sa_report_notjunk\n")); if (em_junk_sa_is_available ()) { - if (mail_session_get_sa_local_only ()) + if (em_junk_sa_get_local_only ()) argv[4] = "--local"; pthread_mutex_lock (&em_junk_sa_report_lock); @@ -358,7 +386,7 @@ em_junk_sa_commit_reports (void) d(fprintf (stderr, "em_junk_sa_commit_reports\n")); if (em_junk_sa_is_available ()) { - if (mail_session_get_sa_local_only ()) + if (em_junk_sa_get_local_only ()) argv[2] = "--local"; pthread_mutex_lock (&em_junk_sa_report_lock); diff --git a/mail/mail-session.c b/mail/mail-session.c index 5a93eab803..e6979061e7 100644 --- a/mail/mail-session.c +++ b/mail/mail-session.c @@ -72,11 +72,6 @@ typedef struct _MailSession { EMutex *lock; MailAsyncEvent *async; - - /* spamassassin filter options */ - gboolean sa_local_only; - gboolean sa_use_daemon; - int sa_daemon_port; } MailSession; typedef struct _MailSessionClass { @@ -100,8 +95,6 @@ init (MailSession *session) { session->lock = e_mutex_new(E_MUTEX_REC); session->async = mail_async_event_new(); - session->sa_local_only = gconf_client_get_bool (mail_config_get_gconf_client (), "/apps/evolution/mail/junk/sa/local_only", NULL); - session->sa_use_daemon = gconf_client_get_bool (mail_config_get_gconf_client (), "/apps/evolution/mail/junk/sa/use_daemon", NULL); } static void @@ -765,42 +758,6 @@ mail_session_forget_password (const char *key) e_passwords_forget_password ("Mail", key); } -gboolean -mail_session_get_sa_local_only () -{ - return MAIL_SESSION (session)->sa_local_only; -} - -void -mail_session_set_sa_local_only (gboolean value) -{ - MAIL_SESSION (session)->sa_local_only = value; -} - -gboolean -mail_session_get_sa_use_daemon () -{ - return MAIL_SESSION (session)->sa_use_daemon; -} - -void -mail_session_set_sa_use_daemon (gboolean value) -{ - MAIL_SESSION (session)->sa_use_daemon = value; -} - -int -mail_session_get_sa_daemon_port () -{ - return MAIL_SESSION (session)->sa_daemon_port; -} - -void -mail_session_set_sa_daemon_port (int value) -{ - MAIL_SESSION (session)->sa_daemon_port = value; -} - static void mail_session_check_junk_notify (GConfClient *gconf, guint id, GConfEntry *entry, CamelSession *session) { @@ -816,13 +773,6 @@ mail_session_check_junk_notify (GConfClient *gconf, guint id, GConfEntry *entry, camel_session_set_check_junk (session, gconf_value_get_bool (gconf_entry_get_value (entry))); else if (!strcmp (key, "check_incoming_imap")) camel_session_set_check_junk_for_imap (session, gconf_value_get_bool (gconf_entry_get_value (entry))); - else if (!strcmp (key, "local_only")) - mail_session_set_sa_local_only (gconf_value_get_bool (gconf_entry_get_value (entry))); - else if (!strcmp (key, "use_daemon")) - mail_session_set_sa_use_daemon (gconf_value_get_bool (gconf_entry_get_value (entry))); - else if (!strcmp (key, "daemon_port")) - mail_session_set_sa_daemon_port (gconf_value_get_int (gconf_entry_get_value (entry))); - } } @@ -844,7 +794,6 @@ mail_session_init (const char *base_directory) gconf_client_add_dir (gconf, "/apps/evolution/mail/junk", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); camel_session_set_check_junk (session, gconf_client_get_bool (gconf, "/apps/evolution/mail/junk/check_incoming", NULL)); camel_session_set_check_junk_for_imap (session, gconf_client_get_bool (gconf, "/apps/evolution/mail/junk/check_incoming_imap", NULL)); - mail_session_set_sa_daemon_port (gconf_client_get_int (gconf, "/apps/evolution/mail/junk/sa/daemon_port", NULL)); session_check_junk_notify_id = gconf_client_notify_add (gconf, "/apps/evolution/mail/junk", (GConfClientNotifyFunc) mail_session_check_junk_notify, session, NULL, NULL); diff --git a/mail/mail-session.h b/mail/mail-session.h index 9eb0dd446e..2a7559964c 100644 --- a/mail/mail-session.h +++ b/mail/mail-session.h @@ -49,13 +49,6 @@ void mail_session_forget_password (const char *key); void mail_session_flush_filter_log (void); -gboolean mail_session_get_sa_local_only (void); -void mail_session_set_sa_local_only (gboolean value); -gboolean mail_session_get_sa_use_daemon (void); -void mail_session_set_sa_use_daemon (gboolean value); -void mail_session_set_sa_daemon_port (int value); -int mail_session_get_sa_daemon_port (void); - extern CamelSession *session; #ifdef __cplusplus |