From e06c008ec1d456d97eb8c52fab8e9a8f924bbdd7 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 27 Jun 2020 10:03:31 +0000 Subject: watchmaildir: hoist out compile_watchheaders It's too deeply indented, and we will be using it for IMAP, too. --- lib/PublicInbox/WatchMaildir.pm | 45 ++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 21 deletions(-) (limited to 'lib/PublicInbox/WatchMaildir.pm') diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index 7ca35403..496199c9 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -13,6 +13,29 @@ use PublicInbox::Filter::Base qw(REJECT); use PublicInbox::Spamcheck; *mime_from_path = \&PublicInbox::InboxWritable::mime_from_path; +sub compile_watchheaders ($) { + my ($ibx) = @_; + my $watch_hdrs = []; + if (my $whs = $ibx->{watchheader}) { + for (@$whs) { + my ($k, $v) = split(/:/, $_, 2); + # XXX should this be case-insensitive? + # Or, mutt-style, case-sensitive iff + # a capital letter exists? + push @$watch_hdrs, [ $k, qr/\Q$v\E/ ]; + } + } + if (my $list_ids = $ibx->{listid}) { + for (@$list_ids) { + # RFC2919 section 6 stipulates + # "case insensitive equality" + my $re = qr/<[ \t]*\Q$_\E[ \t]*>/i; + push @$watch_hdrs, ['List-Id', $re ]; + } + } + $ibx->{-watchheaders} = $watch_hdrs if scalar @$watch_hdrs; +} + sub new { my ($class, $config) = @_; my (%mdmap, @mdir, $spamc); @@ -58,27 +81,7 @@ sub new { my $watch = $ibx->{watch} or return; if (is_maildir($watch)) { - my $watch_hdrs = []; - if (my $whs = $ibx->{watchheader}) { - for (@$whs) { - my ($k, $v) = split(/:/, $_, 2); - # XXX should this be case-insensitive? - # Or, mutt-style, case-sensitive iff - # a capital letter exists? - push @$watch_hdrs, [ $k, qr/\Q$v\E/ ]; - } - } - if (my $list_ids = $ibx->{listid}) { - for (@$list_ids) { - # RFC2919 section 6 stipulates - # "case insensitive equality" - my $re = qr/<[ \t]*\Q$_\E[ \t]*>/i; - push @$watch_hdrs, ['List-Id', $re ]; - } - } - if (scalar @$watch_hdrs) { - $ibx->{-watchheaders} = $watch_hdrs; - } + compile_watchheaders($ibx); my $new = "$watch/new"; my $cur = "$watch/cur"; push @mdir, $new unless $uniq{$new}++; -- cgit v1.2.3-24-ge0c7