Subject: [Fwd: Re: list-extensions]
From: Timo Sirainen <[email-masked]>
To: Fred Batty <[email-masked]>
Cc: [email-masked]
Date: Fri, 19 Oct 2007 13:17:31 +0300
List-Id: <ietf-imapext.imc.org>

This is what I ended up doing myself.

Subject: Re: list-extensions
From: Timo Sirainen <[email-masked]>
To: Alexey Melnikov <[email-masked]>
Date: Mon, 16 Jul 2007 03:57:13 +0300

On Sun, 2007-07-15 at 23:34 +0300, Timo Sirainen wrote:
> On Mon, 2007-07-16 at 00:32 +0400, Alexey Melnikov wrote:
> > I would appreciate if you can list all the examples.

I think I'm beginning to finally understand this. :)

> C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*2"
>       S: * LIST () "/" "foo2" ("CHILDINFO" ("SUBSCRIBED"))
>       S: * LIST (\Subscribed) "/" "foo2/bar2"
>       S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED"))
>       S: * LIST (\Subscribed) "/" "baz2/bar2"
>       S: * LIST (\Subscribed) "/" "baz2/bar22"
>       S: * LIST (\Subscribed) "/" "baz2/bar222"
>       S: * LIST (\Subscribed) "/" "eps2" ("CHILDINFO" ("SUBSCRIBED"))
>       S: * LIST (\Subscribed) "/" "qux2/bar2"
>       S: D03 OK done
> "foo2" and "baz2"

"foo2" needs to be shown, because foo2/bar1 wasn't listed. But since
baz2's all children were listed, it shouldn't be shown.

Found also a typo ("collumn"):

    attribute and CHILDINFO (the first collumn describes if the parent

So, if I understood this correctly, the table could look like:

   +--------+--------------+--------------------+----------------------+
   | exists |   meets the  |  has a child that  |       returned       |
   |        |   selection  |      meets the     |     LIST-EXTENDED    |
   |        |   criteria   | selection criteria |    attributes and    |
   |        |              | (and LIST pattern) |       CHILDINFO      |
   +--------+--------------+--------------------+----------------------+
   |   no   |      no      |         no         |   no LIST response   |
   |        |              |                    |       returned       |
   |        |              |                    |                      |
   |   yes  |      no      |         no         |   no LIST response   |
   |        |              |                    |       returned       |
   |        |              |                    |                      |
   |   yes  |      no      |         no         |   no LIST response   |
   |        |              |                    |       returned       |
   |        |              |                    |                      |
   |   no   |      no      |        both        |  no LIST response    |
   |        |              |                    |       returned       |
   |        |              |                    |                      |
   |   yes  |      no      |        both        |  no LIST response    |
   |        |              |                    |       returned       |
   |        |              |                    |                      |
   |   no   |      yes     |         no         |     (\NonExistent    |
   |        |              |                    |        <attr>)       |
   |        |              |                    |                      |
   |   yes  |      yes     |         no         |       (<attr>)       |
   |        |              |                    |                      |
   |   no   |      no      |   selection-only   |   (\NonExistent) +   |
   |        |              |                    |       CHILDINFO      |
   |        |              |                    |                      |
   |   yes  |      no      |   selection-only   |    () + CHILDINFO    |
   |        |              |                    |                      |
   |   no   |      yes     |   selection/both   |     (\NonExistent    |
   |        |              |                    |  <attr>) + CHILDINFO |
   |        |              |                    |                      |
   |   yes  |      yes     |   selection/both   | (<attr>) + CHILDINFO |
   +--------+--------------+--------------------+----------------------+