I realized that there was no way to know where we try to deliver our email in the triggers called by Email::Filter.
The attached patch fixes that, allowing niceties like: ,---- | sub add_prefix { | my ($self, $boxes) = @_; | for my box (@$boxes) { | if ($box !~ /^$box_prefix/) { | $box = $box_prefix . $dir; | } | } | } | | Email::Filter->add_trigger(before_accept => \&add_prefix); `---- I am sure you can think of other uses. Cheers, Stefan Kangas
pgpTUJrYWbbza.pgp
Description: PGP signature
diff -Naur Email-Filter-1.032/lib/Email/Filter.pm Email-Filter-1.032-skangas//lib/Email/Filter.pm --- Email-Filter-1.032/lib/Email/Filter.pm 2008-09-15 05:26:26.000000000 +0200 +++ Email-Filter-1.032-skangas//lib/Email/Filter.pm 2011-01-31 03:19:20.000000000 +0100 @@ -266,11 +266,11 @@ sub accept { my ($self, @boxes) = @_; - $self->call_trigger("before_accept"); + $self->call_trigger("before_accept", \@boxes); # Unparsing and reparsing is so fast we prefer to do that in order # to keep to LocalDelivery's clean interface. if (Email::LocalDelivery->deliver($self->simple->as_string, @boxes)) { - $self->call_trigger("after_accept"); + $self->call_trigger("after_accept", \@boxes); $self->done_ok; } else { $self->fail_gracefully(); @@ -322,7 +322,7 @@ my ($self, @program) = @_; my $stdout; my $string = $self->simple->as_string; - $self->call_trigger("pipe"); + $self->call_trigger("pipe", \@program); if (eval {run(\@program, \$string, \$stdout)} ) { $self->done_ok; return $stdout;