diff options
author | Eric Wong <e@80x24.org> | 2019-10-16 00:30:28 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-10-16 00:30:28 +0000 |
commit | 356e1db5135802ed468719dfcd1f1c3f9dba9fff (patch) | |
tree | 55a10205b2d7b9723675b454f9ae09652845e693 /lib/PublicInbox/WatchMaildir.pm | |
parent | 2267b305f19ad87e7cc883aac789406580aae549 (diff) | |
parent | a7603ca1d219f39101f8e35bdea1f53ce5c31796 (diff) | |
download | public-inbox-356e1db5135802ed468719dfcd1f1c3f9dba9fff.tar.gz |
* listid: wwwtext: show listid config directive(s) mda, watch: wire up List-ID header support config: allow "0" as a valid mainrepo path config: avoid unnecessary '||' use config: simplify lookup* methods config: we always have {-section_order} Config.pm: Add support for mailing list information
Diffstat (limited to 'lib/PublicInbox/WatchMaildir.pm')
-rw-r--r-- | lib/PublicInbox/WatchMaildir.pm | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index f63140c8..08b1aab4 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -59,9 +59,19 @@ sub new { my $watch = $ibx->{watch} or return; if (is_maildir($watch)) { - if (my $wm = $ibx->{watchheader}) { - my ($k, $v) = split(/:/, $wm, 2); - $ibx->{-watchheader} = [ $k, qr/\Q$v\E/ ]; + my $watch_hdrs = []; + if (my $wh = $ibx->{watchheader}) { + my ($k, $v) = split(/:/, $wh, 2); + push @$watch_hdrs, [ $k, qr/\Q$v\E/ ]; + } + if (my $list_ids = $ibx->{listid}) { + for (@$list_ids) { + my $re = qr/<[ \t]*\Q$_\E[ \t]*>/; + push @$watch_hdrs, ['List-Id', $re ]; + } + } + if (scalar @$watch_hdrs) { + $ibx->{-watchheaders} = $watch_hdrs; } my $new = "$watch/new"; my $cur = "$watch/cur"; @@ -159,10 +169,17 @@ sub _try_path { my $mime = _path_to_mime($path) or next; my $im = _importer_for($self, $ibx); - my $wm = $ibx->{-watchheader}; - if ($wm) { - my $v = $mime->header_obj->header_raw($wm->[0]); - next unless ($v && $v =~ $wm->[1]); + # any header match means it's eligible for the inbox: + if (my $watch_hdrs = $ibx->{-watchheaders}) { + my $ok; + my $hdr = $mime->header_obj; + for my $wh (@$watch_hdrs) { + my $v = $hdr->header_raw($wh->[0]); + next unless defined($v) && $v =~ $wh->[1]; + $ok = 1; + last; + } + next unless $ok; } if (my $scrub = $ibx->filter($im)) { |