[Mimedefang] mimedefang.pl spilling "Use of inherited AUTOLOAD for non-method" errors
David F. Skoll
dfs at roaringpenguin.com
Thu Feb 17 11:32:19 EST 2011
On Thu, 17 Feb 2011 17:21:42 +0100
Jan-Pieter Cornet <johnpc at xs4all.net> wrote:
> You removed the check against $EXPORT_TAGS{macros}.
Oops, that's bad. Here's a better patch.
Regards,
David.
diff --git a/mimedefang.pl.in b/mimedefang.pl.in
index 4489c0c..c863d6d 100755
--- a/mimedefang.pl.in
+++ b/mimedefang.pl.in
@@ -669,17 +669,16 @@ sub time_str () {
{
my($facility) = @_;
- if( ! defined $_fac_map ) {
- $_fac_map = _make_fac_map();
- }
-
my $num = 0;
foreach my $thing (split(/\|/, $facility)) {
- next unless exists $_fac_map->{$thing};
+ if (!defined($_fac_map) ||
+ !exists($_fac_map->{$thing})) {
+ $_fac_map->{$thing} = _fac_to_num($thing);
+ }
+ next unless defined $_fac_map->{$thing};
$num |= $_fac_map->{$thing};
}
return $num;
-
}
my %special = (
@@ -689,37 +688,16 @@ sub time_str () {
# Some of the Unix::Syslog 'macros' tag exports aren't
# constants, so we need to ignore them if found.
- my %blacklisted = map { $_ => 1 } qw(
- LOG_MASK
- LOG_UPTO
- LOG_PRI
- LOG_MAKEPRI
- LOG_FAC
- );
- sub _make_fac_map
- {
- my %map;
-
- # Ugh. Make sure we map only the available constants
- # on this platform. Some are not defined properly on
- # all platforms.
- foreach my $constant ( grep { /^LOG_/ && !exists $blacklisted{$_} } @{ $Unix::Syslog::EXPORT_TAGS{macros}} ) {
- my $name = lc $constant;
- $name =~ s/^log_//;
-
- my $value = eval "Unix::Syslog::$constant()";
- if( defined $value ) {
- $map{$name} = $value;
- }
- }
+ my %blacklisted = map { $_ => 1 } qw(mask upto pri makepri fac);
- # Some strings supported by Sys::Syslog don't
- # correspond to a Unix::Syslog LOG_XXXX constant.
- while( my($new_key, $existing_key) = each %special ) {
- $map{$new_key} = $map{$existing_key};
- }
-
- return \%map;
+ sub _fac_to_num
+ {
+ my ($thing) = @_;
+ return undef if exists $blacklisted{$thing};
+ $thing = $special{$thing} if exists $special{$thing};
+ $thing = 'LOG_' . uc($thing);
+ return undef unless grep { $_ eq $thing } @ {$Unix::Syslog::EXPORT_TAGS{macros} };
+ return eval "Unix::Syslog::$thing()";
}
}
@@ -7450,6 +7428,6 @@ sub md_check_against_smtp_server ($$$$;$) {
return ($retval, $text, $code, $dsn);
}
-exit(&main);
+exit(&main) unless caller;
#------------------------------------------------------------
1;
More information about the MIMEDefang
mailing list