From: Eric Wong Date: Sun, 30 May 2021 06:33:56 +0000 (+0000) Subject: lei lcat: allow IMAP folder URLs w/o UIDVALIDITY X-Git-Tag: v1.7.0~620 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=9b4d6cb8d09777ac3157afe0b08969a959e4968a;p=public-inbox.git lei lcat: allow IMAP folder URLs w/o UIDVALIDITY Requiring UIDVALIDITY on the command-line is of course unreasonable. --- diff --git a/lib/PublicInbox/LeiLcat.pm b/lib/PublicInbox/LeiLcat.pm index 81ab1e36..5bd20c1f 100644 --- a/lib/PublicInbox/LeiLcat.pm +++ b/lib/PublicInbox/LeiLcat.pm @@ -24,7 +24,17 @@ sub lcat_imap_uri ($$) { } elsif (defined(my $fid = $lms->fid_for($$uri))) { push @{$lei->{lcat_fid}}, $fid; } else { - $lei->child_error(1 << 8, "# unknown folder: $uri"); + my $folders = [ $$uri ]; + my $err = $lms->arg2folder($lei, $folders); + $lei->qerr(@{$err->{qerr}}) if $err && $err->{qerr}; + if ($err && $err->{fail}) { + $lei->child_error(1 << 8, "# unknown folder: $uri"); + } else { + for my $f (@$folders) { + my $fid = $lms->fid_for($f); + push @{$lei->{lcat_fid}}, $fid; + } + } } } diff --git a/t/lei-import-imap.t b/t/lei-import-imap.t index 895b19ff..34fd6cf9 100644 --- a/t/lei-import-imap.t +++ b/t/lei-import-imap.t @@ -13,6 +13,7 @@ my $host_port = tcp_host_port($sock); undef $sock; test_lei({ tmpdir => $tmpdir }, sub { my $url = "imap://$host_port/t.v2.0"; + my $url_orig = $url; lei_ok(qw(q z:1..)); my $out = json_utf8->decode($lei_out); @@ -100,6 +101,8 @@ test_lei({ tmpdir => $tmpdir }, sub { lei_ok qw(lcat -f json), $uid_url; $out = json_utf8->decode($lei_out); is(scalar(@$out), 2, 'got JSON') or diag explain($out); + lei_ok qw(lcat), $url_orig; + is($lei_out, $orig, 'lcat w/o UID works'); }); done_testing;