From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id C01751F9F3 for ; Wed, 9 Jun 2021 07:47:51 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 2/5] mdir_reader: maildir_each_file: pass flags, skip Trash Date: Wed, 9 Jun 2021 07:47:48 +0000 Message-Id: <20210609074751.29217-3-e@80x24.org> In-Reply-To: <20210609074751.29217-1-e@80x24.org> References: <20210609074751.29217-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: This is a slight behavior change for "lei q": Trashed (but not-yet-expunged) messages no longer get unlinked when --output is used without --augment. --- lib/PublicInbox/LeiImport.pm | 4 +--- lib/PublicInbox/LeiPmdir.pm | 8 ++++---- lib/PublicInbox/MdirReader.pm | 5 +++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/LeiImport.pm b/lib/PublicInbox/LeiImport.pm index b0e7ba6b..cddd5619 100644 --- a/lib/PublicInbox/LeiImport.pm +++ b/lib/PublicInbox/LeiImport.pm @@ -30,11 +30,9 @@ sub input_mbox_cb { # MboxReader callback } sub pmdir_cb { # called via wq_io_do from LeiPmdir->each_mdir_fn - my ($self, $f, @args) = @_; + my ($self, $f, $fl) = @_; my ($folder, $bn) = ($f =~ m!\A(.+?)/(?:new|cur)/([^/]+)\z!) or die "BUG: $f was not from a Maildir?\n"; - my $fl = PublicInbox::MdirReader::maildir_basename_flags($bn); - return if index($fl, 'T') >= 0; # no Trashed messages my $kw = PublicInbox::MdirReader::flags2kw($fl); substr($folder, 0, 0) = 'maildir:'; # add prefix my $lms = $self->{-lms_ro}; diff --git a/lib/PublicInbox/LeiPmdir.pm b/lib/PublicInbox/LeiPmdir.pm index b71efe70..aa9ce713 100644 --- a/lib/PublicInbox/LeiPmdir.pm +++ b/lib/PublicInbox/LeiPmdir.pm @@ -42,13 +42,13 @@ sub ipc_atfork_child { } sub each_mdir_fn { # maildir_each_file callback - my ($f, $self, @args) = @_; - $self->wq_io_do('mdir_iter', [], $f, @args); + my ($f, $fl, $self, @args) = @_; + $self->wq_io_do('mdir_iter', [], $f, $fl, @args); } sub mdir_iter { # via wq_io_do - my ($self, $f, @args) = @_; - $self->{ipt}->pmdir_cb($f, @args); + my ($self, $f, $fl, @args) = @_; + $self->{ipt}->pmdir_cb($f, $fl, @args); } sub pmd_done_wait { diff --git a/lib/PublicInbox/MdirReader.pm b/lib/PublicInbox/MdirReader.pm index 484bf0a8..dbb74d6d 100644 --- a/lib/PublicInbox/MdirReader.pm +++ b/lib/PublicInbox/MdirReader.pm @@ -42,9 +42,10 @@ sub maildir_each_file { my $pfx = $dir.$d; opendir my $dh, $pfx or next; while (defined(my $bn = readdir($dh))) { - maildir_basename_flags($bn) // next; + my $fl = maildir_basename_flags($bn) // next; next if defined($mod) && !shard_ok($bn, $mod, $shard); - $cb->($pfx.$bn, @arg); + next if index($fl, 'T') >= 0; # no Trashed messages + $cb->($pfx.$bn, $fl, @arg); } } }