X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiExportKw.pm;h=d2396fa7d697bb7b8b9ddf092ff27de65230f350;hb=23af251dd607c4e75ab1e68063f2c885c48cc035;hp=12c8f4067e9e348b430ee3327add7b066c302593;hpb=96a5e841a169166457d9cf485e27a0d6cbe7ed75;p=public-inbox.git diff --git a/lib/PublicInbox/LeiExportKw.pm b/lib/PublicInbox/LeiExportKw.pm index 12c8f406..d2396fa7 100644 --- a/lib/PublicInbox/LeiExportKw.pm +++ b/lib/PublicInbox/LeiExportKw.pm @@ -67,7 +67,17 @@ sub input_path_url { $self->{lms}->each_src($input, \&export_kw_md, $self, $mdir); } elsif ($input =~ m!\Aimaps?://!i) { my $uri = PublicInbox::URIimap->new($input); - if (my $mic = $self->{nwr}->mic_for_folder($uri)) { + my $mic = $self->{nwr}->mic_for_folder($uri); + if ($mic && !$self->{nwr}->can_store_flags($mic)) { + my $m = "$input does not support PERMANENTFLAGS"; + if (defined $self->{lei}->{opt}->{all}) { + $self->{lei}->qerr("# $m"); + } else { # set error code if user explicitly requested + $self->{lei}->child_error(0, "E: $m"); + } + return; + } + if ($mic) { $self->{lms}->each_src($$uri, \&export_kw_imap, $self, $mic); $mic->expunge; @@ -114,13 +124,8 @@ EOM 'imap_add_kw' : 'imap_set_kw'); $self->{nwr}->{-skip_creat} = 1; } - my $ops = {}; - $lei->{auth}->op_merge($ops, $self) if $lei->{auth}; - (my $op_c, $ops) = $lei->workers_start($self, 1, $ops); - $lei->{wq1} = $self; $lei->{-err_type} = 'non-fatal'; - net_merge_all_done($self) unless $lei->{auth}; - $lei->wait_wq_events($op_c, $ops); # net_merge_all_done if !{auth} + $lei->wq1_start($self); } sub _complete_export_kw { @@ -128,7 +133,7 @@ sub _complete_export_kw { my $lms = $lei->lms or return (); my $match_cb = $lei->complete_url_prepare(\@argv); # filter-out read-only sources: - my @k = grep(!m!(?://;AUTH=ANONYMOUS\@|\A(?:nntps?|s?news)://)!, + my @k = grep(m!(?:maildir|imaps?):!, $lms->folders($argv[-1] // undef, 1)); my @m = map { $match_cb->($_) } @k; @m ? @m : @k;