Hi everyone,

this patch (tested on 4.4/i386 and MirBSD #10) fixes mail/bmf to
correctly remove second (and follow-up) lines of a folded header.

Please apply.

Index: Makefile
===================================================================
RCS file: /cvs/ports/mail/bmf/Makefile,v
retrieving revision 1.12
diff -N -u -p Makefile
--- Makefile    11 Sep 2007 07:17:42 -0000      1.12
+++ Makefile    3 Jul 2009 09:57:08 -0000
@@ -2,7 +2,7 @@
 
 COMMENT=               easy to use Bayesian spam filter
 DISTNAME=              bmf-0.9.4
-PKGNAME=               ${DISTNAME}p2
+PKGNAME=               ${DISTNAME}p3
 CATEGORIES=            mail
 HOMEPAGE=              http://sourceforge.net/projects/bmf/
 
Index: patches/patch-lex_c
===================================================================
RCS file: patches/patch-lex_c
diff -N -u -p patches/patch-lex_c
--- /dev/null   3 Jul 2009 09:57:08 -0000
+++ patches/patch-lex_c 3 Jul 2009 09:57:08 -0000
@@ -0,0 +1,38 @@
+$OpenBSD$
+$MirOS: ports/mailnews/bmf/patches/patch-lex_c,v 1.1 2009/07/03 09:14:12 tg 
Exp $
+--- lex.c.orig Sun Oct 20 20:28:53 2002
++++ lex.c      Fri Jul  3 09:06:51 2009
+@@ -682,7 +682,7 @@ again:
+ void lex_passthru( lex_t* pthis, bool_t is_spam, double hits )
+ {
+     char   szbuf[256];
+-    bool_t in_headers = true;
++    bool_t ign_header = false;
+ 
+     assert( pthis->bom < pthis->buflen && pthis->eom <= pthis->buflen );
+     assert( pthis->bom <= pthis->eom );
+@@ -701,7 +701,7 @@ void lex_passthru( lex_t* pthis, bool_t 
+     }
+ 
+     /* existing headers */
+-    while( in_headers && pthis->pos < pthis->eom )
++    while( pthis->pos < pthis->eom )
+     {
+         cpchar pbuf = pthis->pbuf + pthis->pos;
+         uint len = 0;
+@@ -722,9 +722,14 @@ void lex_passthru( lex_t* pthis, bool_t 
+         }
+  
+         /* write header, ignoring existing spam headers */
+-        if( strncasecmp( pbuf, "X-Spam-", 7 ) != 0 )
++        if( ign_header && (pbuf[0] == ' ' || pbuf[0] == '\t') )
++            /* continuation line of an ignored header */ ;
++        else if( strncasecmp( pbuf, "X-Spam-", 7 ) == 0 )
++            ign_header = true;
++        else
+         {
+             write( STDOUT_FILENO, pbuf, len );
++            ign_header = false;
+         }
+ 
+         pthis->pos += len;


//mirabilos
-- 
tarent Gesellschaft für Softwareentwicklung und IT-Beratung mbH

Heilsbachstr. 24, 53123 Bonn  |  Weigandufer 45, 12059 Berlin
fon: +49(0)228 / 52675-0      |  fon: +49(0)30 / 5682943-30
fax: +49(0)228 / 52675-25     |  fax: +49(0)228 / 52675-25

Schützenstr. 18, 10117 Berlin
fon: +49(0)30 / 27594853
fax: +49(0)30 / 78709617

Geschäftsführer: Boris Esser, Elmar Geese
HRB AG Bonn 5168 - Ust-ID: DE122264941

Reply via email to