X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=lib%2FPublicInbox%2FIMAPD.pm;h=b24097a2453c10783aa334484ba3920d329d85b5;hp=fb9458477ef7a09d135cc21c6ac8f252985830dd;hb=23af251dd607c4e75ab1e68063f2c885c48cc035;hpb=8862c33ae93eea1af6246cd3c7a81e0a122186bf diff --git a/lib/PublicInbox/IMAPD.pm b/lib/PublicInbox/IMAPD.pm index fb945847..b24097a2 100644 --- a/lib/PublicInbox/IMAPD.pm +++ b/lib/PublicInbox/IMAPD.pm @@ -1,10 +1,11 @@ -# Copyright (C) 2020 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # represents an IMAPD (currently a singleton), # see script/public-inbox-imapd for how it is used package PublicInbox::IMAPD; use strict; +use v5.10.1; use PublicInbox::Config; use PublicInbox::ConfigIter; use PublicInbox::InboxIdle; @@ -70,12 +71,21 @@ sub imapd_refresh_finalize { } %$mailboxes = (%$mailboxes, %{$imapd->{mailboxes}}); $imapd->{mailboxes} = $mailboxes; - $imapd->{inboxlist} = [ + $imapd->{mailboxlist} = [ + map { $_->[2] } + sort { $a->[0] cmp $b->[0] || $a->[1] <=> $b->[1] } map { - my $no = $mailboxes->{$_} == $dummy ? '' : 'No'; my $u = $_; # capitalize "INBOX" for user-familiarity $u =~ s/\Ainbox(\.|\z)/INBOX$1/i; - qq[* LIST (\\Has${no}Children) "." $u\r\n] + if ($mailboxes->{$_} == $dummy) { + [ $u, -1, + qq[* LIST (\\HasChildren) "." $u\r\n]] + } else { + $u =~ /\A(.+)\.([0-9]+)\z/ or + die "BUG: `$u' has no slice digit(s)"; + [ $1, $2 + 0, + qq[* LIST (\\HasNoChildren) "." $u\r\n] ] + } } keys %$mailboxes ]; $imapd->{pi_cfg} = $pi_cfg; @@ -84,7 +94,7 @@ sub imapd_refresh_finalize { } } -sub imapd_refresh_step { # pi_cfg->iterate_start cb +sub imapd_refresh_step { # PublicInbox::ConfigIter cb my ($pi_cfg, $section, $imapd) = @_; if (defined($section)) { return if $section !~ m!\Apublicinbox\.([^/]+)\z!;