changeset 5807:ec09ad1d017f HEAD

mailbox_list_iter_next() returns now const pointer.
author Timo Sirainen <tss@iki.fi>
date Wed, 27 Jun 2007 17:00:32 +0300
parents 3704fe78f2f9
children 45735dd11f17
files src/imap/cmd-list.c src/lib-storage/list/index-mailbox-list.c src/lib-storage/list/mailbox-list-fs-iter.c src/lib-storage/list/mailbox-list-fs.h src/lib-storage/list/mailbox-list-maildir-iter.c src/lib-storage/list/mailbox-list-maildir.c src/lib-storage/list/mailbox-list-maildir.h src/lib-storage/mailbox-list-private.h src/lib-storage/mailbox-list.c src/lib-storage/mailbox-list.h src/plugins/acl/acl-backend-vfile-acllist.c src/plugins/acl/acl-mailbox-list.c src/plugins/convert/convert-storage.c src/plugins/quota/quota-count.c src/plugins/quota/quota-maildir.c
diffstat 15 files changed, 42 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/cmd-list.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/imap/cmd-list.c	Wed Jun 27 17:00:32 2007 +0300
@@ -106,7 +106,7 @@
 
 static bool
 list_insert_ns_prefix(string_t *name_str, struct cmd_list_context *ctx,
-		      struct mailbox_info *info)
+		      const struct mailbox_info *info)
 {
 	if (strcasecmp(info->name, "INBOX") != 0) {
 		/* non-INBOX always has prefix */
@@ -135,7 +135,7 @@
 static int
 list_namespace_mailboxes(struct client *client, struct cmd_list_context *ctx)
 {
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 	const char *name;
 	string_t *str, *name_str;
 	int ret = 0;
--- a/src/lib-storage/list/index-mailbox-list.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/list/index-mailbox-list.c	Wed Jun 27 17:00:32 2007 +0300
@@ -211,7 +211,7 @@
 	 (ctx)->recurse_level >= 0)
 
 static int iter_next_nonsync(struct index_mailbox_list_iterate_context *ctx,
-			     struct mailbox_info **info_r)
+			     const struct mailbox_info **info_r)
 {
 	struct index_mailbox_list *ilist = INDEX_LIST_CONTEXT(ctx->ctx.list);
 	struct mailbox_list_index_info iinfo;
@@ -294,13 +294,13 @@
 	return &ctx->info;
 }
 
-static struct mailbox_info *
+static const struct mailbox_info *
 index_mailbox_list_iter_next(struct mailbox_list_iterate_context *_ctx)
 {
 	struct index_mailbox_list_iterate_context *ctx =
 		(struct index_mailbox_list_iterate_context *)_ctx;
 	struct index_mailbox_list *ilist = INDEX_LIST_CONTEXT(_ctx->list);
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 	uint32_t seq, flags;
 	enum imap_match_result match;
 
--- a/src/lib-storage/list/mailbox-list-fs-iter.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/list/mailbox-list-fs-iter.c	Wed Jun 27 17:00:32 2007 +0300
@@ -25,16 +25,19 @@
 	bool inbox_found, inbox_listed;
 	enum mailbox_info_flags inbox_flags;
 
-	struct mailbox_info *(*next)(struct fs_list_iterate_context *ctx);
+	const struct mailbox_info *(*next)(struct fs_list_iterate_context *ctx);
 
 	pool_t info_pool;
 	struct mailbox_info info;
         struct list_dir_context *dir;
 };
 
-static struct mailbox_info *fs_list_subs(struct fs_list_iterate_context *ctx);
-static struct mailbox_info *fs_list_path(struct fs_list_iterate_context *ctx);
-static struct mailbox_info *fs_list_next(struct fs_list_iterate_context *ctx);
+static const struct mailbox_info *
+fs_list_subs(struct fs_list_iterate_context *ctx);
+static const struct mailbox_info *
+fs_list_path(struct fs_list_iterate_context *ctx);
+static const struct mailbox_info *
+fs_list_next(struct fs_list_iterate_context *ctx);
 
 static const char *mask_get_dir(const char *mask)
 {
@@ -176,7 +179,7 @@
 	return ret;
 }
 
-struct mailbox_info *
+const struct mailbox_info *
 fs_list_iter_next(struct mailbox_list_iterate_context *_ctx)
 {
 	struct fs_list_iterate_context *ctx =
@@ -330,7 +333,8 @@
 	return 0;
 }
 
-static struct mailbox_info *fs_list_subs(struct fs_list_iterate_context *ctx)
+static const struct mailbox_info *
+fs_list_subs(struct fs_list_iterate_context *ctx)
 {
 	const char *name, *path, *p, *dir, *fname;
 	enum imap_match_result match = IMAP_MATCH_NO;
@@ -376,7 +380,8 @@
 	return &ctx->info;
 }
 
-static struct mailbox_info *fs_list_path(struct fs_list_iterate_context *ctx)
+static const struct mailbox_info *
+fs_list_path(struct fs_list_iterate_context *ctx)
 {
 	ctx->next = fs_list_next;
 
@@ -390,7 +395,8 @@
 		return ctx->next(ctx);
 }
 
-static struct mailbox_info *fs_list_next(struct fs_list_iterate_context *ctx)
+static const struct mailbox_info *
+fs_list_next(struct fs_list_iterate_context *ctx)
 {
 	struct list_dir_context *dir;
 	struct dirent *d;
--- a/src/lib-storage/list/mailbox-list-fs.h	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/list/mailbox-list-fs.h	Wed Jun 27 17:00:32 2007 +0300
@@ -17,7 +17,7 @@
 fs_list_iter_init(struct mailbox_list *_list, const char *mask,
 		  enum mailbox_list_iter_flags flags);
 int fs_list_iter_deinit(struct mailbox_list_iterate_context *ctx);
-struct mailbox_info *
+const struct mailbox_info *
 fs_list_iter_next(struct mailbox_list_iterate_context *ctx);
 
 #endif
--- a/src/lib-storage/list/mailbox-list-maildir-iter.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/list/mailbox-list-maildir-iter.c	Wed Jun 27 17:00:32 2007 +0300
@@ -295,7 +295,7 @@
 	return ret;
 }
 
-struct mailbox_info *
+const struct mailbox_info *
 maildir_list_iter_next(struct mailbox_list_iterate_context *_ctx)
 {
 	struct maildir_list_iterate_context *ctx =
--- a/src/lib-storage/list/mailbox-list-maildir.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/list/mailbox-list-maildir.c	Wed Jun 27 17:00:32 2007 +0300
@@ -273,7 +273,7 @@
 			   const char *oldname, const char *newname)
 {
 	struct mailbox_list_iterate_context *iter;
-        struct mailbox_info *info;
+        const struct mailbox_info *info;
 	ARRAY_DEFINE(names_arr, const char *);
 	const char *mask, *oldpath, *newpath, *old_listname, *new_listname;
 	const char *const *names;
--- a/src/lib-storage/list/mailbox-list-maildir.h	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/list/mailbox-list-maildir.h	Wed Jun 27 17:00:32 2007 +0300
@@ -17,7 +17,7 @@
 maildir_list_iter_init(struct mailbox_list *_list, const char *mask,
 		       enum mailbox_list_iter_flags flags);
 int maildir_list_iter_deinit(struct mailbox_list_iterate_context *ctx);
-struct mailbox_info *
+const struct mailbox_info *
 maildir_list_iter_next(struct mailbox_list_iterate_context *ctx);
 
 #endif
--- a/src/lib-storage/mailbox-list-private.h	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/mailbox-list-private.h	Wed Jun 27 17:00:32 2007 +0300
@@ -29,7 +29,7 @@
 	struct mailbox_list_iterate_context *
 		(*iter_init)(struct mailbox_list *list, const char *mask,
 			     enum mailbox_list_iter_flags flags);
-	struct mailbox_info *
+	const struct mailbox_info *
 		(*iter_next)(struct mailbox_list_iterate_context *ctx);
 	int (*iter_deinit)(struct mailbox_list_iterate_context *ctx);
 
--- a/src/lib-storage/mailbox-list.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/mailbox-list.c	Wed Jun 27 17:00:32 2007 +0300
@@ -284,7 +284,7 @@
 	return list->v.iter_init(list, mask, flags);
 }
 
-struct mailbox_info *
+const struct mailbox_info *
 mailbox_list_iter_next(struct mailbox_list_iterate_context *ctx)
 {
 	return ctx->list->v.iter_next(ctx);
--- a/src/lib-storage/mailbox-list.h	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/lib-storage/mailbox-list.h	Wed Jun 27 17:00:32 2007 +0300
@@ -152,7 +152,7 @@
 mailbox_list_iter_init(struct mailbox_list *list, const char *mask,
 		       enum mailbox_list_iter_flags flags);
 /* Get next mailbox. Returns the mailbox name */
-struct mailbox_info *
+const struct mailbox_info *
 mailbox_list_iter_next(struct mailbox_list_iterate_context *ctx);
 /* Deinitialize mailbox list request. Returns FALSE if some error
    occurred while listing. */
--- a/src/plugins/acl/acl-backend-vfile-acllist.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/plugins/acl/acl-backend-vfile-acllist.c	Wed Jun 27 17:00:32 2007 +0300
@@ -180,7 +180,7 @@
 	struct mailbox_list *list = backend->backend.list;
 	struct mail_namespace *ns;
 	struct mailbox_list_iterate_context *iter;
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 	const char *rootdir, *acllist_path;
 	struct ostream *output;
 	struct stat st;
--- a/src/plugins/acl/acl-mailbox-list.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/plugins/acl/acl-mailbox-list.c	Wed Jun 27 17:00:32 2007 +0300
@@ -154,13 +154,13 @@
 	return &ctx->ctx;
 }
 
-static struct mailbox_info *
+static const struct mailbox_info *
 acl_mailbox_list_iter_next(struct mailbox_list_iterate_context *_ctx)
 {
 	struct acl_mailbox_list_iterate_context *ctx =
 		(struct acl_mailbox_list_iterate_context *)_ctx;
 	struct acl_mailbox_list *alist = ACL_LIST_CONTEXT(_ctx->list);
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 	struct mailbox_node *node;
 	int ret;
 
@@ -170,8 +170,8 @@
 							 &ctx->info.name);
 			if (node == NULL)
 				return NULL;
+			ctx->info.flags = node->flags;
 			info = &ctx->info;
-			info->flags = node->flags;
 		} else {
 			info = alist->module_ctx.super.
 				iter_next(ctx->super_ctx);
@@ -198,8 +198,13 @@
 		if ((ctx->ctx.flags & MAILBOX_LIST_ITER_SUBSCRIBED) != 0) {
 			/* it's subscribed, show it as non-existent */
 			if ((ctx->ctx.flags &
-			     MAILBOX_LIST_ITER_FAST_FLAGS) == 0)
-				info->flags = MAILBOX_NONEXISTENT;
+			     MAILBOX_LIST_ITER_FAST_FLAGS) == 0) {
+				if (info != &ctx->info) {
+					ctx->info = *info;
+					info = &ctx->info;
+				}
+				ctx->info.flags = MAILBOX_NONEXISTENT;
+			}
 			return info;
 		}
 
--- a/src/plugins/convert/convert-storage.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/plugins/convert/convert-storage.c	Wed Jun 27 17:00:32 2007 +0300
@@ -128,7 +128,7 @@
 
 static int mailbox_convert_list_item(struct mail_storage *source_storage,
 				     struct mail_storage *dest_storage,
-				     struct mailbox_info *info,
+				     const struct mailbox_info *info,
 				     struct dotlock *dotlock,
 				     const struct convert_settings *set)
 {
@@ -209,7 +209,7 @@
 			     const struct convert_settings *set)
 {
 	struct mailbox_list_iterate_context *iter;
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 	int ret = 0;
 
 	iter = mailbox_list_iter_init(mail_storage_get_list(source_storage),
@@ -235,7 +235,7 @@
 					   const struct convert_settings *set)
 {
 	struct mailbox_list_iterate_context *iter;
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 	struct mailbox_list *dest_list;
 	const char *dest_name;
 	int ret = 0;
--- a/src/plugins/quota/quota-count.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/plugins/quota/quota-count.c	Wed Jun 27 17:00:32 2007 +0300
@@ -51,7 +51,7 @@
 			       uint64_t *bytes, uint64_t *count)
 {
 	struct mailbox_list_iterate_context *ctx;
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 	int ret = 0;
 
 	ctx = mailbox_list_iter_init(storage->list, "*",
--- a/src/plugins/quota/quota-maildir.c	Wed Jun 27 16:51:59 2007 +0300
+++ b/src/plugins/quota/quota-maildir.c	Wed Jun 27 17:00:32 2007 +0300
@@ -39,7 +39,7 @@
 struct maildir_list_context {
 	struct mail_storage *storage;
 	struct mailbox_list_iterate_context *iter;
-	struct mailbox_info *info;
+	const struct mailbox_info *info;
 
 	string_t *path;
 	int state;