about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-03-10 13:23:44 +0000
committerEric Wong <e@80x24.org>2021-03-10 23:39:16 -0400
commit2399a0133868e8fffbe86e0ebff8b862d52e7e1e (patch)
tree3484d8758139e4af753be192db5a33d8aca468d4
parent0c42d57cc29917b731d4a4918f9b2d666ee230e6 (diff)
downloadpublic-inbox-2399a0133868e8fffbe86e0ebff8b862d52e7e1e.tar.gz
This matches IMAP behavior in NetReader in skipping \\Deleted
messages.  Since lei may be used for personal, non-public mail;
Draft messages are NOT skipped by "lei import".
-rw-r--r--lib/PublicInbox/MdirReader.pm1
-rw-r--r--t/lei-import-maildir.t7
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/PublicInbox/MdirReader.pm b/lib/PublicInbox/MdirReader.pm
index 44724af1..06806e80 100644
--- a/lib/PublicInbox/MdirReader.pm
+++ b/lib/PublicInbox/MdirReader.pm
@@ -57,6 +57,7 @@ sub maildir_each_eml ($$;@) {
         opendir my $dh, $pfx or return;
         while (defined(my $bn = readdir($dh))) {
                 my $fl = maildir_basename_flags($bn) // next;
+                next if index($fl, 'T') >= 0;
                 my $f = $pfx.$bn;
                 my $eml = eml_from_path($f) or next;
                 my @kw = sort(map { $c2kw{$_} // () } split(//, $fl));
diff --git a/t/lei-import-maildir.t b/t/lei-import-maildir.t
index a3796491..bd89677a 100644
--- a/t/lei-import-maildir.t
+++ b/t/lei-import-maildir.t
@@ -29,5 +29,12 @@ test_lei(sub {
         like($res->[0]->{'s'}, qr/use boolean/, 'got expected result');
         is_deeply($res->[0]->{kw}, ['answered', 'seen'], 'keywords set');
         is($res->[1], undef, 'only got one result');
+
+        symlink(abs_path('t/utf8.eml'), "$md/cur/u:2,ST") or
+                BAIL_OUT "symlink $md $!";
+        lei_ok('import', "maildir:$md", \'import Maildir w/ trashed message');
+        lei_ok(qw(q -d none m:testmessage@example.com));
+        $res = json_utf8->decode($lei_out);
+        is_deeply($res, [ undef ], 'trashed message not imported');
 });
 done_testing;