[dovecot-cvs] dovecot/src/lib-index mail-index-private.h, 1.59, 1.60 mail-index-sync-ext.c, 1.14, 1.15 mail-index.c, 1.210, 1.211

cras at dovecot.org cras at dovecot.org
Fri Jan 6 14:57:08 EET 2006


Update of /var/lib/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv8740

Modified Files:
	mail-index-private.h mail-index-sync-ext.c mail-index.c 
Log Message:
Moved expunge handlers to mail_index_registered_ext.



Index: mail-index-private.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-private.h,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- mail-index-private.h	6 Jan 2006 12:48:55 -0000	1.59
+++ mail-index-private.h	6 Jan 2006 12:57:06 -0000	1.60
@@ -91,7 +91,8 @@
 	uint16_t record_size;
 	uint16_t record_align;
 
-        struct mail_index_sync_handler sync_handler;
+	struct mail_index_sync_handler sync_handler;
+        mail_index_expunge_handler_t *expunge_handler;
 };
 
 struct mail_index_map {
@@ -135,7 +136,6 @@
 	pool_t extension_pool;
 	array_t ARRAY_DEFINE(extensions, struct mail_index_registered_ext);
 
-	array_t ARRAY_DEFINE(expunge_handlers, mail_index_expunge_handler_t *);
 	array_t ARRAY_DEFINE(sync_lost_handlers,
 			     mail_index_sync_lost_handler_t *);
 

Index: mail-index-sync-ext.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-sync-ext.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- mail-index-sync-ext.c	6 Jan 2006 12:48:55 -0000	1.14
+++ mail-index-sync-ext.c	6 Jan 2006 12:57:06 -0000	1.15
@@ -11,25 +11,18 @@
 
 void mail_index_sync_init_expunge_handlers(struct mail_index_sync_map_ctx *ctx)
 {
-	mail_index_expunge_handler_t *const *handlers;
-        const struct mail_index_ext *extensions;
+        const struct mail_index_ext *ext;
+	const struct mail_index_registered_ext *rext;
 	const uint32_t *id_map;
 	void **contexts;
 	struct mail_index_expunge_handler eh;
-	unsigned int count, ext_count, id_map_count;
-	unsigned int handlers_count, context_count;
+	unsigned int ext_count, id_map_count;
+	unsigned int rext_count, context_count;
 	uint32_t idx_ext_id, map_ext_id;
 
 	if (!array_is_created(&ctx->view->map->extensions))
 		return;
 
-	handlers = array_get(&ctx->view->index->expunge_handlers,
-			     &handlers_count);
-
-	if (handlers_count == 0)
-		return;
-
-	/* set expunge handlers */
 	memset(&eh, 0, sizeof(eh));
 	if (array_is_created(&ctx->expunge_handlers))
 		array_clear(&ctx->expunge_handlers);
@@ -38,20 +31,23 @@
 			     struct mail_index_expunge_handler, 64);
 	}
 
-	extensions = array_get(&ctx->view->map->extensions, &ext_count);
+	rext = array_get(&ctx->view->index->extensions, &rext_count);
+	ext = array_get(&ctx->view->map->extensions, &ext_count);
 	id_map = array_get(&ctx->view->map->ext_id_map, &id_map_count);
 	contexts = array_get_modifyable(&ctx->extra_contexts, &context_count);
 
-	count = I_MIN(handlers_count, id_map_count);
-	for (idx_ext_id = 0; idx_ext_id < count; idx_ext_id++) {
+	i_assert(id_map_count <= rext_count);
+
+	for (idx_ext_id = 0; idx_ext_id < id_map_count; idx_ext_id++) {
 		map_ext_id = id_map[idx_ext_id];
-		if (handlers[idx_ext_id] == NULL || map_ext_id == (uint32_t)-1)
+		if (rext[idx_ext_id].expunge_handler == NULL ||
+		    map_ext_id == (uint32_t)-1)
 			continue;
 
 		i_assert(map_ext_id < context_count);
-		eh.handler = handlers[idx_ext_id];
+		eh.handler = rext[idx_ext_id].expunge_handler;
 		eh.context = &contexts[map_ext_id];
-		eh.record_offset = extensions[map_ext_id].record_offset;
+		eh.record_offset = ext[map_ext_id].record_offset;
 		array_append(&ctx->expunge_handlers, &eh, 1);
 	}
 	ctx->expunge_handlers_set = TRUE;

Index: mail-index.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.210
retrieving revision 1.211
diff -u -d -r1.210 -r1.211
--- mail-index.c	6 Jan 2006 12:48:55 -0000	1.210
+++ mail-index.c	6 Jan 2006 12:57:06 -0000	1.211
@@ -34,8 +34,6 @@
 	ARRAY_CREATE(&index->extensions, index->extension_pool,
 		     struct mail_index_registered_ext, 5);
 
-	ARRAY_CREATE(&index->expunge_handlers, default_pool,
-		     mail_index_expunge_handler_t *, 4);
 	ARRAY_CREATE(&index->sync_lost_handlers, default_pool,
 		     mail_index_sync_lost_handler_t *, 4);
 
@@ -61,7 +59,6 @@
 	pool_unref(index->keywords_pool);
 
 	array_free(&index->sync_lost_handlers);
-	array_free(&index->expunge_handlers);
 	array_free(&index->keywords);
 
 	i_free(index->error);
@@ -109,23 +106,23 @@
 					 uint32_t ext_id,
 					 mail_index_expunge_handler_t *cb)
 {
-        mail_index_expunge_handler_t **p;
+	struct mail_index_registered_ext *rext;
 
-	p = array_idx_modifyable(&index->expunge_handlers, ext_id);
-	i_assert(*p == NULL);
+	rext = array_idx_modifyable(&index->extensions, ext_id);
+	i_assert(rext->expunge_handler == NULL);
 
-	*p = cb;
+	rext->expunge_handler = cb;
 }
 
 void mail_index_unregister_expunge_handler(struct mail_index *index,
 					   uint32_t ext_id)
 {
-        mail_index_expunge_handler_t **p;
+	struct mail_index_registered_ext *rext;
 
-	p = array_idx_modifyable(&index->expunge_handlers, ext_id);
-	i_assert(*p != NULL);
+	rext = array_idx_modifyable(&index->extensions, ext_id);
+	i_assert(rext->expunge_handler != NULL);
 
-	*p = NULL;
+	rext->expunge_handler = NULL;
 }
 
 void mail_index_register_sync_handler(struct mail_index *index, uint32_t ext_id,



More information about the dovecot-cvs mailing list