-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
as a matter of interest -- I guess this is for Daniel -- why is that debug-area-splitting-and-validation code not part of Mail::SpamAssassin, anyway? Looks like it's duplicated in spamd, spamassassin, and sa-learn, which will result in it getting changed in one and forgotten in the others (as has just happened here ;) Code duplication = bad. - --j. [EMAIL PROTECTED] writes: > Author: mss > Date: Thu Dec 2 13:36:57 2004 > New Revision: 109552 > > URL: http://svn.apache.org/viewcvs?view=rev&rev=109552 > Log: > Made it possible to replace all the warn() kludges in spamd with dbg() or > info() calls. > > Modified: > spamassassin/trunk/lib/Mail/SpamAssassin.pm > spamassassin/trunk/spamd/spamd.raw > > Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm > Url: > http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin.pm?view=diff&rev=109552&p1=spamassassin/trunk/lib/Mail/SpamAssassin.pm&r1=109551&p2=spamassassin/trunk/lib/Mail/SpamAssassin.pm&r2=109552 > ============================================================================== > --- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original) > +++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Thu Dec 2 13:36:57 2004 > @@ -243,16 +243,8 @@ > if (!defined $self) { $self = { }; } > bless ($self, $class); > > - # define debugging facilities first > - $INFO = 0; > - $DEBUG = 0; > - if (defined $self->{debug} && ref($self->{debug}) eq "ARRAY") { > - $facilities{$_} = 1 for @{ $self->{debug} }; > - # turn on informational notices > - $INFO = 1 if keys %facilities; > - # turn on debugging if facilities other than "info" are enabled > - $DEBUG = keys %facilities && !(keys %facilities == 1 && > $facilities{info}); > - } > + # enable or disable debugging > + Mail::SpamAssassin::_init_debugger(ref $self->{debug} eq 'ARRAY' ? @{ > $self->{debug} } : ()); > > # first debugging information possibly printed should be the version > info("generic: SpamAssassin version ".Version()); > @@ -280,6 +272,25 @@ > > $self; > } > + > +# Do not use this routine in any 3rd-party scripts, it's not part of the > +# official public API! spamd needs it though. > +# > +# Enables or disables debugging based on the facilities given. This will > +# affect ALL SpamAssassin objects! > +sub _init_debugger { > + # define debugging facilities first > + $INFO = 0; > + $DEBUG = 0; > + if (@_) { > + $facilities{$_} = 1 for @_; > + # turn on informational notices > + $INFO = 1 if keys %facilities; > + # turn on debugging if facilities other than "info" are enabled > + $DEBUG = keys %facilities && !(keys %facilities == 1 && > $facilities{info}); > + } > +} > + > > sub create_locker { > my ($self) = @_; > > Modified: spamassassin/trunk/spamd/spamd.raw > Url: > http://svn.apache.org/viewcvs/spamassassin/trunk/spamd/spamd.raw?view=diff&rev=109552&p1=spamassassin/trunk/spamd/spamd.raw&r1=109551&p2=spamassassin/trunk/spamd/spamd.raw&r2=109552 > ============================================================================== > --- spamassassin/trunk/spamd/spamd.raw (original) > +++ spamassassin/trunk/spamd/spamd.raw Thu Dec 2 13:36:57 2004 > @@ -217,7 +217,7 @@ > 'auto-whitelist|whitelist|a' => sub { warn "The -a option has > been removed. Please look at the use_auto_whitelist config option > instead.\n"; exit 2; }, > > ) or print_usage_and_exit(); > - > + > if ($opt{'help'}) { > print_usage_and_exit(qq{For more details, use "man spamd".\n}, 'EX_OK'); > } > @@ -226,6 +226,25 @@ > exit($resphash{'EX_OK'}); > } > > + > +# Enable debugging, if any areas were specified. We do this already here, > +# accessing some non-public API so we can use the convenient dbg() routine. > +my @DEBUG; > +if (defined $opt{'debug'}) { > + if ($opt{'debug'}) { > + @DEBUG = split(/,/, $opt{'debug'}); > + if (grep { !/^\S+$/ } @DEBUG) { > + warn "bad areas in --debug option\n"; > + } > + } > + else { > + @DEBUG = ("all"); > + } > +} > +# Don't do this at home (aka any 3rd party tools), kids! > +Mail::SpamAssassin::_init_debugger(@DEBUG); > + > + > # bug 2228: make the values of (almost) all parameters which accept file > paths > # absolute, so they are still valid after daemonize() > foreach my $opt ( > @@ -728,19 +747,6 @@ > Mail::SpamAssassin::Util::untaint_file_path( $opt{'pidfile'} ); > } > > -# set debug areas, if any specified (only useful for command-line tools) > -my @debug; > -if (defined $opt{'debug'}) { > - if ($opt{'debug'}) { > - @debug = split(/,/, $opt{'debug'}); > - if (grep { !/^\S+$/ } @debug) { > - warn "bad areas in --debug option\n"; > - } > - } > - else { > - @debug = ("all"); > - } > -} > > my $spamtest = Mail::SpamAssassin->new( > { > @@ -748,7 +754,7 @@ > rules_filename => ( $opt{'configpath'} || 0 ), > site_rules_filename => ( $opt{'siteconfigpath'} || 0 ), > local_tests_only => ( $opt{'local'} || 0 ), > - debug => [EMAIL PROTECTED], > + debug => [EMAIL PROTECTED], > paranoid => ( $opt{'paranoid'} || 0 ), > home_dir_for_helpers => ( > defined $opt{'home_dir_for_helpers'} -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Exmh CVS iD8DBQFBr41OMJF5cimLx9ARAljEAKC0600S1wLFsr8SC8gZr0S1cJ01XACgpCAh EI1mk8CoFBtkaLTaM/fn4yw= =VCqF -----END PGP SIGNATURE-----