You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by fe...@apache.org on 2004/09/04 06:05:45 UTC

svn commit: rev 43317 - spamassassin/trunk/lib/Mail/SpamAssassin

Author: felicity
Date: Fri Sep  3 21:05:44 2004
New Revision: 43317

Modified:
   spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
   spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
Log:
bug 3238: allow people to zero-pad the _SCORE_ tag if they want.  adds some backward compatibility with 2.x, etc.

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm	(original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm	Fri Sep  3 21:05:44 2004
@@ -3067,7 +3067,11 @@
 
  _YESNOCAPS_       "YES"/"NO" for is/isn't spam
  _YESNO_           "Yes"/"No" for is/isn't spam
- _SCORE_           message score
+ _SCORE(PAD)_      message score, if PAD is included and is either spaces or
+                   zeroes, then pad scores with that many spaces or zeroes
+		   (default, none)  ie: _SCORE(0)_ makes 2.4 become 02.4,
+		   _SCORE(00)_ is 002.4.  12.3 would be 12.3 and 012.3
+		   respectively.
  _REQD_            message threshold
  _VERSION_         version (eg. 3.0.0 or 3.1.0-r26142-foo1)
  _SUBVERSION_      sub-version/code revision date (eg. 2004-01-10)

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm	(original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm	Fri Sep  3 21:05:44 2004
@@ -963,7 +963,7 @@
   my $self = shift;
   my $text = shift;
 
-  $text =~ s/_(\w+?)(?:\((.*?)\))?_/${\($self->_get_tag($1,$2 || ""))}/g;
+  $text =~ s/_(\w+?)(?:\((.*?)\))?_/${\($self->_get_tag($1,$2))}/g;
   return $text;
 }
 
@@ -1032,11 +1032,17 @@
 }
 
 sub _get_tag_value_for_score {
-  my $self   = shift;
-  
+  my ($self, $pad) = @_;
+
   my $score  = sprintf("%2.1f", $self->{score});
   my $rscore = $self->_get_tag_value_for_required_score();
-  
+
+  # padding
+  if (defined $pad && $pad =~ /^(0+| +)$/) {
+    my $count = length($1) + 3 - length($score);
+    $score = (substr($pad, 0, $count) . $score) if $count > 0;
+  }
+
   # Do some rounding tricks to avoid the 5.0!=5.0-phenomenon,
   # see <http://bugzilla.spamassassin.org/show_bug.cgi?id=2607>
   return $score if $self->{is_spam} or $score < $rscore;
@@ -1055,12 +1061,14 @@
 
   # tag data also comes from $self->{tag_data}->{TAG}
 
+  $tag = "" unless defined $tag; # can be "0", so use defined test
+
   %tags = ( YESNO     => sub {    $self->_get_tag_value_for_yesno() },
   
             YESNOCAPS => sub { uc $self->_get_tag_value_for_yesno() },
 
-            SCORE => sub { $self->_get_tag_value_for_score() },
-            HITS  => sub { $self->_get_tag_value_for_score() },
+            SCORE => sub { $self->_get_tag_value_for_score(shift) },
+            HITS  => sub { $self->_get_tag_value_for_score(shift) },
 
             REQD  => sub { $self->_get_tag_value_for_required_score() },