[dovecot-cvs] dovecot/src/imap cmd-list.c,1.28,1.29

cras at procontrol.fi cras at procontrol.fi
Sun Jul 27 09:52:03 EEST 2003


Update of /home/cvs/dovecot/src/imap
In directory danu:/tmp/cvs-serv26911

Modified Files:
	cmd-list.c 
Log Message:
A bit more temporary kludging



Index: cmd-list.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-list.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- cmd-list.c	27 Jul 2003 05:37:13 -0000	1.28
+++ cmd-list.c	27 Jul 2003 05:52:01 -0000	1.29
@@ -93,6 +93,7 @@
 
 int _cmd_list_full(struct client *client, int lsub)
 {
+	struct namespace *ns;
 	struct mail_storage *storage;
 	struct imap_arg *args;
         enum mailbox_list_flags list_flags;
@@ -100,19 +101,6 @@
 	char sep_chr, sep[3];
 	int failed, listext;
 
-	/* FIXME: really needs some work.. */
-	storage = client->namespaces->storage;
-
-	sep_chr = storage->hierarchy_sep;
-	if (sep_chr == '"' || sep_chr == '\\') {
-		sep[0] = '\\';
-		sep[1] = sep_chr;
-		sep[2] = '\0';
-	} else {
-		sep[0] = sep_chr;
-		sep[1] = '\0';
-	}
-
 	/* [(<options>)] <reference> <mailbox wildcards> */
 	if (!client_read_args(client, 0, 0, &args))
 		return FALSE;
@@ -138,6 +126,23 @@
 	if (ref == NULL || mask == NULL) {
 		client_send_command_error(client, "Invalid arguments.");
 		return TRUE;
+	}
+
+	/* FIXME: really needs some work.. */
+	ns = namespace_find(client->namespaces, mask);
+	if (ns != NULL)
+		storage = ns->storage;
+	else
+		storage = client->namespaces->storage;
+
+	sep_chr = storage->hierarchy_sep;
+	if (sep_chr == '"' || sep_chr == '\\') {
+		sep[0] = '\\';
+		sep[1] = sep_chr;
+		sep[2] = '\0';
+	} else {
+		sep[0] = sep_chr;
+		sep[1] = '\0';
 	}
 
 	if (*mask == '\0' && !lsub) {



More information about the dovecot-cvs mailing list