See bug ** 325210

2005-01-04  Shi Pu  <shi.pu@sun.com>

        See bug **  325210

        * em-junk-filter.c:
        (get_spamassassin_version): gets the spamassassin version which evolution used        (em_junk_sa_report_junk),
        (em_junk_sa_report_non_junk),
        (em_junk_sa_commit_reports): judge spamassassin version to decide
        which sync option should be used

svn path=/trunk/; revision=31050
This commit is contained in:
Shi Pu
2006-01-04 09:06:01 +00:00
committed by Harry Lu
parent b278fdd587
commit ce328275aa
2 changed files with 58 additions and 3 deletions

View File

@ -1,3 +1,14 @@
2005-01-04 Shi Pu <shi.pu@sun.com>
See bug ** 325210
* em-junk-filter.c:
(get_spamassassin_version): gets the spamassassin version which evolution used
(em_junk_sa_report_junk),
(em_junk_sa_report_non_junk),
(em_junk_sa_commit_reports): judge spamassassin version to decide
which sync option should be used
2005-10-06 Vivek Jain <jvivek@novell.com>
** See Bug #268852

View File

@ -73,6 +73,8 @@ static gboolean em_junk_sa_use_spamc = FALSE;
static gboolean em_junk_sa_available = FALSE;
static gboolean em_junk_sa_system_spamd_available = FALSE;
static gboolean em_junk_sa_new_daemon_started = FALSE;
static gboolean em_junk_sa_checked_spamassassin_version = FALSE;
static guint em_junk_sa_spamassassin_version = 0;
static char *em_junk_sa_socket_path = NULL;
static char *em_junk_sa_spamd_pidfile = NULL;
static char *em_junk_sa_spamc_binary = NULL;
@ -588,12 +590,52 @@ em_junk_sa_check_junk(EPlugin *ep, EMJunkHookTarget *target)
return rv;
}
static guint
get_spamassassin_version ()
{
GByteArray *out = NULL;
int i;
char * argv[3] = {
"sa-learn",
"--version",
NULL
};
if (!em_junk_sa_checked_spamassassin_version){
out = g_byte_array_new ();
if (pipe_to_sa_full (NULL, NULL, argv, -1, 1, out) != 0){
if(out)
g_byte_array_free (out, TRUE);
return em_junk_sa_spamassassin_version;
}
if(out->len > 0){
for(i = 0; i < out->len; i++){
if(g_ascii_isdigit (out->data[i])){
em_junk_sa_spamassassin_version = (out->data[i] - '0');
em_junk_sa_checked_spamassassin_version = TRUE;
break;
}
}
}
if(out)
g_byte_array_free (out, TRUE);
}
return em_junk_sa_spamassassin_version;
}
void
em_junk_sa_report_junk (EPlugin *ep, EMJunkHookTarget *target)
{
char *sync_op = ((get_spamassassin_version () >= 3) ? "--no-sync": "--no-rebuild");
char *argv[6] = {
"sa-learn",
"--no-rebuild",
sync_op,
"--spam",
"--single",
NULL,
@ -620,9 +662,10 @@ em_junk_sa_report_junk (EPlugin *ep, EMJunkHookTarget *target)
void
em_junk_sa_report_non_junk (EPlugin *ep, EMJunkHookTarget *target)
{
char *sync_op = ((get_spamassassin_version () >= 3) ? "--no-sync": "--no-rebuild");
char *argv[6] = {
"sa-learn",
"--no-rebuild",
sync_op,
"--ham",
"--single",
NULL,
@ -645,9 +688,10 @@ em_junk_sa_report_non_junk (EPlugin *ep, EMJunkHookTarget *target)
void
em_junk_sa_commit_reports (EPlugin *ep, EMJunkHookTarget *target)
{
char *sync_op = ((get_spamassassin_version () >= 3) ? "--sync": "--rebuild");
char *argv[4] = {
"sa-learn",
"--rebuild",
sync_op,
NULL,
NULL
};