diff options
author | Eric Wong <e@yhbt.net> | 2020-08-02 11:22:07 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-08-03 04:29:03 +0000 |
commit | 11c4929d7ee08b4174918fd9e3d10e10636a054c (patch) | |
tree | 7458c013a0a14f922c1f093e4d3f8725c2bb7ea3 /lib/PublicInbox/InboxWritable.pm | |
parent | 70d93f6bd20a90dadcac4843a5759751fcec4e6d (diff) | |
download | public-inbox-11c4929d7ee08b4174918fd9e3d10e10636a054c.tar.gz |
Email::Address::XS and PublicInbox::MsgTime both emit warnings which are likely to trigger from spam messages. Since this can be configured to remove spam, just filter out those warnings to avoid cluttering up stderr with useless information.
Diffstat (limited to 'lib/PublicInbox/InboxWritable.pm')
-rw-r--r-- | lib/PublicInbox/InboxWritable.pm | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/PublicInbox/InboxWritable.pm b/lib/PublicInbox/InboxWritable.pm index 7fb5a150..752f1997 100644 --- a/lib/PublicInbox/InboxWritable.pm +++ b/lib/PublicInbox/InboxWritable.pm @@ -9,7 +9,7 @@ use parent qw(PublicInbox::Inbox Exporter); use PublicInbox::Import; use PublicInbox::Filter::Base qw(REJECT); use Errno qw(ENOENT); -our @EXPORT_OK = qw(eml_from_path); +our @EXPORT_OK = qw(eml_from_path warn_ignore_cb); use constant { PERM_UMASK => 0, @@ -278,4 +278,24 @@ sub cleanup ($) { delete @{$_[0]}{qw(over mm git search)}; } +# warnings to ignore when handling spam mailboxes and maybe other places +sub warn_ignore { + my $s = "@_"; + # Email::Address::XS warnings + $s =~ /^Argument contains empty address at / + || $s =~ /^Element at index [0-9]+ contains / + # PublicInbox::MsgTime + || $s =~ /^bogus TZ offset: .+?, ignoring and assuming \+0000/ + || $s =~ /^bad Date: .+? in / +} + +# this expects to be RHS in this assignment: "local $SIG{__WARN__} = ..." +sub warn_ignore_cb { + my $cb = $SIG{__WARN__} // sub { print STDERR @_ }; + sub { + return if warn_ignore(@_); + $cb->(@_); + } +} + 1; |