dovecot-2.2: lib-storage: Mailbox tree API supports now includin...

dovecot at dovecot.org dovecot at dovecot.org
Mon Aug 13 00:36:53 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/acc60089da4f
changeset: 14885:acc60089da4f
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Aug 13 00:36:38 2012 +0300
description:
lib-storage: Mailbox tree API supports now including extra data in the nodes.

diffstat:

 src/lib-storage/mailbox-tree.c |  12 +++++++++++-
 src/lib-storage/mailbox-tree.h |   2 ++
 2 files changed, 13 insertions(+), 1 deletions(-)

diffs (53 lines):

diff -r 7aece00b8538 -r acc60089da4f src/lib-storage/mailbox-tree.c
--- a/src/lib-storage/mailbox-tree.c	Mon Aug 13 00:33:47 2012 +0300
+++ b/src/lib-storage/mailbox-tree.c	Mon Aug 13 00:36:38 2012 +0300
@@ -9,6 +9,7 @@
 	pool_t pool;
 	char separator;
 	bool parents_nonexistent;
+	unsigned int node_size;
 
 	struct mailbox_node *nodes;
 };
@@ -28,11 +29,20 @@
 
 struct mailbox_tree_context *mailbox_tree_init(char separator)
 {
+	return mailbox_tree_init_size(separator, sizeof(struct mailbox_node));
+}
+
+struct mailbox_tree_context *
+mailbox_tree_init_size(char separator, unsigned int mailbox_node_size)
+{
 	struct mailbox_tree_context *tree;
 
+	i_assert(mailbox_node_size >= sizeof(struct mailbox_node));
+
 	tree = i_new(struct mailbox_tree_context, 1);
 	tree->pool = pool_alloconly_create(MEMPOOL_GROWING"mailbox_tree", 10240);
 	tree->separator = separator;
+	tree->node_size = mailbox_node_size;
 	return tree;
 }
 
@@ -104,7 +114,7 @@
 			if (!create)
 				break;
 
-			*node = p_new(tree->pool, struct mailbox_node, 1);
+			*node = p_malloc(tree->pool, tree->node_size);
 			(*node)->parent = parent;
 			(*node)->name = p_strdup(tree->pool, name);
 			if (tree->parents_nonexistent)
diff -r 7aece00b8538 -r acc60089da4f src/lib-storage/mailbox-tree.h
--- a/src/lib-storage/mailbox-tree.h	Mon Aug 13 00:33:47 2012 +0300
+++ b/src/lib-storage/mailbox-tree.h	Mon Aug 13 00:36:38 2012 +0300
@@ -13,6 +13,8 @@
 };
 
 struct mailbox_tree_context *mailbox_tree_init(char separator);
+struct mailbox_tree_context *
+mailbox_tree_init_size(char separator, unsigned int mailbox_node_size);
 void mailbox_tree_deinit(struct mailbox_tree_context **tree);
 
 void mailbox_tree_set_separator(struct mailbox_tree_context *tree,


More information about the dovecot-cvs mailing list