From: Don Armstrong Date: Tue, 21 Jul 2009 20:36:41 +0000 (+0200) Subject: fix Mail install and script install X-Git-Tag: release/2.6.0~461^2~2 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=008bb980ec1425b13510bdb49b8fc15ccee63d83;p=debbugs.git fix Mail install and script install --- diff --git a/Mail/CrossAssassin.pm b/Mail/CrossAssassin.pm new file mode 100644 index 00000000..b8c676f3 --- /dev/null +++ b/Mail/CrossAssassin.pm @@ -0,0 +1,98 @@ +# CrossAssassin.pm 2004/04/12 blarson + +package Mail::CrossAssassin; + +use strict; +require Exporter; +our @ISA = qw(Exporter); +our @EXPORT = qw(ca_init ca_keys ca_set ca_score ca_expire); +our $VERSION = 0.1; + +use Digest::MD5 qw(md5_base64); +use DB_File; + +our %database; +our $init; +our $addrpat = '\b\d{3,8}(?:-(?:close|done|forwarded|maintonly|submitter|quiet))?\@bugs\.debian\.org'; + +sub ca_init(;$$) { + my $ap = shift; + $addrpat = $ap if(defined $ap); + my $dir = shift; + return if ($init && ! defined($dir)); + $dir = "$ENV{'HOME'}/.crosssassassin" unless (defined($dir)); + (mkdir $dir or die "Could not create \"$dir\"") unless (-d $dir); + untie %database; + tie %database, 'DB_File', "$dir/Crossdb" + or die "Could not initialize crosassasin database \"$dir/Crossdb\": $!"; + $init = 1; +} + +sub ca_keys($) { + my $body = shift; + my @keys; + my $m = join('',@$body); + $m =~ s/\n(?:\s*\n)+/\n/gm; + if (length($m) > 4000) { + my $m2 = $m; + $m2 =~ s/\S\S+/\*/gs; + push @keys, '0'.md5_base64($m2); + } +# $m =~ s/^--.*$/--/m; + $m =~ s/$addrpat/LOCAL\@ADDRESS/iogm; + push @keys, '1'.md5_base64($m); + return join(' ',@keys); +} + +sub ca_set($) { + my @keys = split(' ', $_[0]); + my $now = time; + my $score = 0; + my @scores; + foreach my $k (@keys) { + my ($count,$date) = split(' ',$database{$k}); + $count++; + $score = $count if ($count > $score); + $database{$k} = "$count $now"; + push @scores, $count; + } + return (wantarray ? @scores : $score); +} + +sub ca_score($) { + my @keys = split(' ', $_[0]); + my $score = 0; + my @scores; + my $i = 0; + foreach my $k (@keys) { + my ($count,$date) = split(' ',$database{$k}); + $score = $count if ($count > $score); + $i++; + push @scores, $count; + } + return (wantarray ? @scores : $score); +} + +sub ca_expire($) { + my $when = shift; + my @ret; + my $num = 0; + my $exp = 0; + while (my ($k, $v) = each %database) { + $num++; + my ($count, $date) = split(' ', $v); + if ($date <= $when) { + delete $database{$k}; + $exp++; + } + } + return ($num, $exp); +} + +END { + return unless($init); + untie %database; + undef($init); +} + +1; diff --git a/Makefile b/Makefile index 1bb7ef88..df174b82 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ man_dir := $(DESTDIR)/usr/share/man man8_dir := $(man_dir)/man8 examples_dir := $(doc_dir)/examples -scripts_in := $(foreach script, $(filter-out scripts/config scripts/errorlib scripts/text, $(wildcard scripts/*)),$(patsubst scripts/%,%,$(script))) +scripts_in = $(foreach script, $(filter-out scripts/config% scripts/errorlib scripts/text, $(wildcard scripts/*)),$(patsubst scripts/%,%,$(script))) htmls_in := $(wildcard html/*.html.in) cgis := $(wildcard cgi/*.cgi cgi/*.pl) @@ -61,7 +61,7 @@ $(var_dir)/spool/db-h $(scripts_dir) $(examples_dir) $(man8_dir); \ # install the scripts - $(foreach script,$(scripts_in), $(exec $(install_exec) $(script) $(scripts_dir)/$(script))) + $(foreach script,$(scripts_in), $(install_exec) scripts/$(script) $(scripts_dir);) $(install_data) scripts/errorlib $(scripts_dir)/errorlib # install examples diff --git a/Makefile.PL b/Makefile.PL index 06b43cca..0063970e 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -3,7 +3,7 @@ use ExtUtils::MakeMaker; WriteMakefile(FIRST_MAKEFILE => 'Makefile.perl', - PMLIBDIRS => ['Debbugs'], + PMLIBDIRS => ['Debbugs','Mail'], EXE_FILES => ['bin/local-debbugs', 'bin/add_bug_to_estraier', ], diff --git a/debian/debbugs.install b/debian/debbugs.install index 81d29cbe..38ec1f1f 100644 --- a/debian/debbugs.install +++ b/debian/debbugs.install @@ -6,3 +6,6 @@ var/lib/debbugs/spool var/lib/debbugs/indices usr/bin/add_bug_to_estraier usr/share/man/man1/add_bug_* +# there currently isn't a Mail::Crossassassin manpage +#usr/share/man/man3/Mail* +usr/share/perl5/Mail* \ No newline at end of file diff --git a/debian/libdebbugs-perl.install b/debian/libdebbugs-perl.install index c4acdfa7..bc1da7ea 100644 --- a/debian/libdebbugs-perl.install +++ b/debian/libdebbugs-perl.install @@ -1,3 +1,3 @@ -usr/share/man/man3 -usr/share/perl5 +usr/share/man/man3/Debbugs* +usr/share/perl5/Debbugs* #etc/debbugs/config diff --git a/scripts/Mail/CrossAssassin.pm b/scripts/Mail/CrossAssassin.pm deleted file mode 100644 index b8c676f3..00000000 --- a/scripts/Mail/CrossAssassin.pm +++ /dev/null @@ -1,98 +0,0 @@ -# CrossAssassin.pm 2004/04/12 blarson - -package Mail::CrossAssassin; - -use strict; -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT = qw(ca_init ca_keys ca_set ca_score ca_expire); -our $VERSION = 0.1; - -use Digest::MD5 qw(md5_base64); -use DB_File; - -our %database; -our $init; -our $addrpat = '\b\d{3,8}(?:-(?:close|done|forwarded|maintonly|submitter|quiet))?\@bugs\.debian\.org'; - -sub ca_init(;$$) { - my $ap = shift; - $addrpat = $ap if(defined $ap); - my $dir = shift; - return if ($init && ! defined($dir)); - $dir = "$ENV{'HOME'}/.crosssassassin" unless (defined($dir)); - (mkdir $dir or die "Could not create \"$dir\"") unless (-d $dir); - untie %database; - tie %database, 'DB_File', "$dir/Crossdb" - or die "Could not initialize crosassasin database \"$dir/Crossdb\": $!"; - $init = 1; -} - -sub ca_keys($) { - my $body = shift; - my @keys; - my $m = join('',@$body); - $m =~ s/\n(?:\s*\n)+/\n/gm; - if (length($m) > 4000) { - my $m2 = $m; - $m2 =~ s/\S\S+/\*/gs; - push @keys, '0'.md5_base64($m2); - } -# $m =~ s/^--.*$/--/m; - $m =~ s/$addrpat/LOCAL\@ADDRESS/iogm; - push @keys, '1'.md5_base64($m); - return join(' ',@keys); -} - -sub ca_set($) { - my @keys = split(' ', $_[0]); - my $now = time; - my $score = 0; - my @scores; - foreach my $k (@keys) { - my ($count,$date) = split(' ',$database{$k}); - $count++; - $score = $count if ($count > $score); - $database{$k} = "$count $now"; - push @scores, $count; - } - return (wantarray ? @scores : $score); -} - -sub ca_score($) { - my @keys = split(' ', $_[0]); - my $score = 0; - my @scores; - my $i = 0; - foreach my $k (@keys) { - my ($count,$date) = split(' ',$database{$k}); - $score = $count if ($count > $score); - $i++; - push @scores, $count; - } - return (wantarray ? @scores : $score); -} - -sub ca_expire($) { - my $when = shift; - my @ret; - my $num = 0; - my $exp = 0; - while (my ($k, $v) = each %database) { - $num++; - my ($count, $date) = split(' ', $v); - if ($date <= $when) { - delete $database{$k}; - $exp++; - } - } - return ($num, $exp); -} - -END { - return unless($init); - untie %database; - undef($init); -} - -1;