Mailing List Archive

svn commit: r109603 - /spamassassin/trunk/lib/Mail/SpamAssassin.pm /spamassassin/trunk/sa-learn.raw /spamassassin/trunk/spamassassin.raw /spamassassin/trunk/spamd/spamd.raw
Author: mss
Date: Thu Dec 2 16:33:28 2004
New Revision: 109603

URL: http://svn.apache.org/viewcvs?view=rev&rev=109603
Log:
Moved debug-facility string parsing to Mail::SpamAssassin::_init_debugger as suggested by jm. Tested both the array-ref and plain string variant, the hash-ref one should work, too. Hope I didn't forget any tool (if so, please port it).

Modified:
spamassassin/trunk/lib/Mail/SpamAssassin.pm
spamassassin/trunk/sa-learn.raw
spamassassin/trunk/spamassassin.raw
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=109603&p1=spamassassin/trunk/lib/Mail/SpamAssassin.pm&r1=109602&p2=spamassassin/trunk/lib/Mail/SpamAssassin.pm&r2=109603
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Thu Dec 2 16:33:28 2004
@@ -244,7 +244,7 @@
bless ($self, $class);

# enable or disable debugging
- Mail::SpamAssassin::_init_debugger(ref $self->{debug} eq 'ARRAY' ? @{ $self->{debug} } : ());
+ Mail::SpamAssassin::_init_debugger($self->{debug});

# first debugging information possibly printed should be the version
info("generic: SpamAssassin version ".Version());
@@ -280,14 +280,33 @@
# affect ALL SpamAssassin objects!
sub _init_debugger {
# define debugging facilities first
- $INFO = 0;
- $DEBUG = 0;
- if (@_) {
- $facilities{$_} = 1 for @_;
+ $Mail::SpamAssassin::INFO = 0;
+ $Mail::SpamAssassin::DEBUG = 0;
+
+ my $facilities = $_[0];
+ my @facilities = ();
+ if (ref ($facilities) eq '') {
+ return if not defined $facilities or $facilities eq '0';
+ @facilities = split(/,/, $facilities);
+ }
+ elsif (ref ($facilities) eq 'ARRAY') {
+ @facilities = @{ $facilities };
+ }
+ elsif (ref ($facilities) eq 'HASH') {
+ @facilities = grep { $facilities{$_} } keys %{ $facilities };
+ }
+ else {
+ return;
+ }
+ @facilities = grep(/^\S+$/, @facilities);
+
+ if (@facilities) {
+ $Mail::SpamAssassin::facilities{$_} = 1 for @facilities;
# turn on informational notices
- $INFO = 1 if keys %facilities;
+ $Mail::SpamAssassin::INFO = 1;
# turn on debugging if facilities other than "info" are enabled
- $DEBUG = keys %facilities && !(keys %facilities == 1 && $facilities{info});
+ $Mail::SpamAssassin::DEBUG = keys %Mail::SpamAssassin::facilities > 1
+ || !$Mail::SpamAssassin::facilities{info};
}
}


Modified: spamassassin/trunk/sa-learn.raw
Url: http://svn.apache.org/viewcvs/spamassassin/trunk/sa-learn.raw?view=diff&rev=109603&p1=spamassassin/trunk/sa-learn.raw&r1=109602&p2=spamassassin/trunk/sa-learn.raw&r2=109603
==============================================================================
--- spamassassin/trunk/sa-learn.raw (original)
+++ spamassassin/trunk/sa-learn.raw Thu Dec 2 16:33:28 2004
@@ -147,17 +147,8 @@
}

# 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) {
- usage(0, "bad areas in --debug option!");
- }
- }
- else {
- @debug = ("all");
- }
+ $opt{'debug'} ||= 'all';
}

if ( $opt{'force-expire'} ) {
@@ -202,7 +193,7 @@
site_rules_filename => $opt{'siteconfigpath'},
userprefs_filename => $opt{'prefspath'},
username => $opt{'username'},
- debug => \@debug,
+ debug => $opt{'debug'},
local_tests_only => 1,
dont_copy_prefs => 1,
PREFIX => $PREFIX,

Modified: spamassassin/trunk/spamassassin.raw
Url: http://svn.apache.org/viewcvs/spamassassin/trunk/spamassassin.raw?view=diff&rev=109603&p1=spamassassin/trunk/spamassassin.raw&r1=109602&p2=spamassassin/trunk/spamassassin.raw&r2=109603
==============================================================================
--- spamassassin/trunk/spamassassin.raw (original)
+++ spamassassin/trunk/spamassassin.raw Thu Dec 2 16:33:28 2004
@@ -211,17 +211,8 @@
}

# 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) {
- print_usage_and_exit("bad areas in --debug option!");
- }
- }
- else {
- @debug = ("all");
- }
+ $opt{'debug'} ||= 'all';
}

# create the tester factory
@@ -231,7 +222,7 @@
site_rules_filename => $opt{'siteconfigpath'},
userprefs_filename => $opt{'prefspath'},
local_tests_only => $opt{'local'},
- debug => \@debug,
+ debug => $opt{'debug'},
dont_copy_prefs => ( $opt{'create-prefs'} ? 0 : 1 ),
PREFIX => $PREFIX,
DEF_RULES_DIR => $DEF_RULES_DIR,

Modified: spamassassin/trunk/spamd/spamd.raw
Url: http://svn.apache.org/viewcvs/spamassassin/trunk/spamd/spamd.raw?view=diff&rev=109603&p1=spamassassin/trunk/spamd/spamd.raw&r1=109602&p2=spamassassin/trunk/spamd/spamd.raw&r2=109603
==============================================================================
--- spamassassin/trunk/spamd/spamd.raw (original)
+++ spamassassin/trunk/spamd/spamd.raw Thu Dec 2 16:33:28 2004
@@ -229,20 +229,11 @@

# 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;
+# Don't do this at home (aka any 3rd party tools), kids!
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");
- }
+ $opt{'debug'} ||= 'all';
}
-# Don't do this at home (aka any 3rd party tools), kids!
-Mail::SpamAssassin::_init_debugger(@DEBUG);
+Mail::SpamAssassin::_init_debugger($opt{'debug'});


# bug 2228: make the values of (almost) all parameters which accept file paths
@@ -459,7 +450,7 @@
);

# Don't duplicate log messages in debug mode.
-if ( $log_facility eq 'stderr' and @DEBUG ) {
+if ( $log_facility eq 'stderr' and $Mail::SpamAssassin::DEBUG ) {
dbg("logger: facility stderr disabled: already debugging to stderr.");
$log_facility = 'null';
}
@@ -761,7 +752,7 @@
rules_filename => ( $opt{'configpath'} || 0 ),
site_rules_filename => ( $opt{'siteconfigpath'} || 0 ),
local_tests_only => ( $opt{'local'} || 0 ),
- debug => \@DEBUG,
+ debug => ( $opt{'debug'} || 0 ),
paranoid => ( $opt{'paranoid'} || 0 ),
home_dir_for_helpers => (
defined $opt{'home_dir_for_helpers'}
@@ -1920,7 +1911,7 @@
sub daemonize {

# Pretty command line in ps
- $0 = join (' ', $ORIG_ARG0, @ORIG_ARGV) unless @DEBUG;
+ $0 = join (' ', $ORIG_ARG0, @ORIG_ARGV) unless $Mail::SpamAssassin::DEBUG;

# Be a nice daemon and chdir() to the root so we don't block any unmount attempts
chdir '/' or die "Can't chdir to /: $!\n";