changeset 1748:588326f1cd84 HEAD

If LISTEXT is used and CHILDREN info isn't wanted, don't send it.
author Timo Sirainen <tss@iki.fi>
date Sat, 06 Sep 2003 20:29:52 +0300
parents a1183185b013
children 9ce1e589d3c1
files src/imap/cmd-list.c
diffstat 1 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/cmd-list.c	Sat Sep 06 20:25:33 2003 +0300
+++ b/src/imap/cmd-list.c	Sat Sep 06 20:29:52 2003 +0300
@@ -8,7 +8,14 @@
 #include "commands.h"
 #include "namespace.h"
 
-static const char *mailbox_flags2str(enum mailbox_flags flags, int listext)
+enum imap_list_flags {
+	IMAP_LIST_FLAG_EXT	= 0x01,
+	IMAP_LIST_FLAG_CHILDREN
+};
+
+static const char *
+mailbox_flags2str(enum mailbox_flags flags, enum mailbox_list_flags list_flags,
+		  int listext)
 {
 	const char *str;
 
@@ -22,6 +29,11 @@
 	if ((flags & MAILBOX_NONEXISTENT) != 0 && !listext)
 		flags |= MAILBOX_NOSELECT;
 
+	if (listext && (list_flags & MAILBOX_LIST_CHILDREN) == 0) {
+		/* LISTEXT used and we didn't want children info */
+		flags &= ~(MAILBOX_CHILDREN|MAILBOX_NOCHILDREN);
+	}
+
 	str = t_strconcat((flags & MAILBOX_NOSELECT) ? " \\Noselect" : "",
 			  (flags & MAILBOX_NONEXISTENT) ? " \\NonExistent" : "",
 			  (flags & MAILBOX_PLACEHOLDER) ? " \\PlaceHolder" : "",
@@ -51,7 +63,7 @@
 	while ((list = storage->list_mailbox_next(ctx)) != NULL) {
 		str_truncate(str, 0);
 		str_printfa(str, "* %s (%s) \"%s\" ", reply,
-			    mailbox_flags2str(list->flags, listext),
+			    mailbox_flags2str(list->flags, list_flags, listext),
 			    sep);
 		if (strcasecmp(list->name, "INBOX") == 0)
 			str_append(str, "INBOX");