sub _remove_spam {
my ($self, $path) = @_;
- $path =~ /:2,[A-R]*S[T-Z]*\z/i or return;
+ # path must be marked as (S)een
+ $path =~ /:2,[A-R]*S[T-Za-z]*\z/ or return;
my $mime = _path_to_mime($path) or return;
_force_mid($mime);
$self->{config}->each_inbox(sub {
$im->remove($mime);
if (my $scrub = _scrubber_for($ibx)) {
my $scrubbed = $scrub->scrub($mime) or return;
+ $scrubbed == 100 and return;
$im->remove($scrubbed);
}
};
- warn "error removing spam at $path from $ibx->{name}\n" if $@;
+ if ($@) {
+ warn "error removing spam at: ", $path,
+ " from ", $ibx->{name}, ': ', $@, "\n";
+ }
})
}
return unless ($v && $v =~ $wm->[1]);
}
if (my $scrub = _scrubber_for($inbox)) {
- $mime = $scrub->scrub($mime) or return;
+ my $ret = $scrub->scrub($mime) or return;
+ $ret == 100 and return;
+ $mime = $ret;
}
_force_mid($mime);
my $addr = $inbox->{-primary_address};
PublicInbox::Import->new($git, $name, $addr, $inbox);
};
- $self->{importers}->{"$im"} = $im;
+
+ my $importers = $self->{importers};
+ if (scalar(keys(%$importers)) > 2) {
+ delete $importers->{"$im"};
+ _done_for_now($self);
+ }
+
+ $importers->{"$im"} = $im;
}
sub _scrubber_for {
my ($inbox) = @_;
my $f = $inbox->{filter};
if ($f && $f =~ /::/) {
+ my @args = (-inbox => $inbox);
+ # basic line splitting, only
+ # Perhaps we can have proper quote splitting one day...
+ ($f, @args) = split(/\s+/, $f) if $f =~ /\s+/;
+
eval "require $f";
if ($@) {
warn $@;
} else {
- return $f->new;
+ # e.g: PublicInbox::Filter::Vger->new(@args)
+ return $f->new(@args);
}
}
undef;