From 5fa10d84517ffe08ac85b13961bdbd20baf3d807 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 27 Jun 2020 10:03:45 +0000 Subject: imaptracker: add {url} field to reduce args Passing a $url parameter to every function was error-prone and having {url} field for a short-lived object is appropriate. This matches the version of IMAPTracker posted by Eric W. Biederman on 2020-05-15 at: https://public-inbox.org/meta/87ftc0c3r4.fsf_-_@x220.int.ebiederm.org/ The version I originally imported was based on the one posted on 2019-10-09: https://public-inbox.org/meta/874l0i9vhc.fsf_-_@x220.int.ebiederm.org/ Cc: Eric W. Biederman --- lib/PublicInbox/WatchMaildir.pm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'lib/PublicInbox/WatchMaildir.pm') diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index f36aa20a..e0caaa56 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -335,12 +335,12 @@ sub mic_for ($$$) { # mic = Mail::IMAPClient $mic; } -sub imap_import_msg ($$$$$$) { - my ($self, $itrk, $url, $r_uidval, $uid, $raw) = @_; +sub imap_import_msg ($$$$$) { + my ($self, $itrk, $r_uidval, $uid, $raw) = @_; # our target audience expects LF-only, save storage $$raw =~ s/\r\n/\n/sg; - my $inboxes = $self->{imap}->{$url}; + my $inboxes = $self->{imap}->{$itrk->{url}}; if (ref($inboxes)) { for my $ibx (@$inboxes) { my $eml = PublicInbox::Eml->new($$raw); @@ -348,12 +348,12 @@ sub imap_import_msg ($$$$$$) { } } elsif ($inboxes eq 'watchspam') { my $eml = PublicInbox::Eml->new($raw); - my $arg = [ $self, $eml, "$url UID:$uid" ]; + my $arg = [ $self, $eml, "$itrk->{url} UID:$uid" ]; $self->{config}->each_inbox(\&remove_eml_i, $arg); } else { die "BUG: destination unknown $inboxes"; } - $itrk->update_last($url, $r_uidval, $uid); + $itrk->update_last($r_uidval, $uid); } sub imap_fetch_all ($$$) { @@ -373,8 +373,8 @@ sub imap_fetch_all ($$$) { return "E: $url cannot get UIDVALIDITY"; $r_uidnext //= $mic->uidnext($mbx) // return "E: $url cannot get UIDNEXT"; - my $itrk = PublicInbox::IMAPTracker->new; - my ($l_uidval, $l_uid) = $itrk->get_last($url); + my $itrk = PublicInbox::IMAPTracker->new($url); + my ($l_uidval, $l_uid) = $itrk->get_last; $l_uidval //= $r_uidval; # first time $l_uid //= 1; if ($l_uidval != $r_uidval) { @@ -426,8 +426,7 @@ sub imap_fetch_all ($$$) { } # messages get deleted, so holes appear defined(my $raw = delete $r->{$uid}->{$key}) or next; - imap_import_msg($self, $itrk, $url, $r_uidval, $uid, - \$raw); + imap_import_msg($self, $itrk, $r_uidval, $uid, \$raw); last if $self->{quit}; } _done_for_now($self); -- cgit v1.2.3-24-ge0c7