[dovecot-cvs] dovecot/src/lib-index mail-index-view-private.h, 1.18, 1.19 mail-index-view-sync.c, 1.43, 1.44 mail-index-view.c, 1.36, 1.37

cras at dovecot.org cras at dovecot.org
Fri Jan 6 17:25:49 EET 2006


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

Modified Files:
	mail-index-view-private.h mail-index-view-sync.c 
	mail-index-view.c 
Log Message:
Converted some buffers to arrays.



Index: mail-index-view-private.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-view-private.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- mail-index-view-private.h	5 Feb 2005 18:05:25 -0000	1.18
+++ mail-index-view-private.h	6 Jan 2006 15:25:46 -0000	1.19
@@ -36,13 +36,13 @@
 	unsigned int indexid;
 	struct mail_index_map *map;
 	struct mail_index_map *new_map;
-	buffer_t *map_refs;
+	array_t ARRAY_DEFINE(map_refs, struct mail_index_map *);
 
 	struct mail_index_header hdr;
 
 	uint32_t log_file_seq;
 	uoff_t log_file_offset;
-        buffer_t *log_syncs;
+	array_t ARRAY_DEFINE(log_syncs, struct mail_index_view_log_sync_pos);
 
 	int transactions;
 	unsigned int lock_id;

Index: mail-index-view-sync.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-view-sync.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- mail-index-view-sync.c	4 Jul 2005 11:32:20 -0000	1.43
+++ mail-index-view-sync.c	6 Jan 2006 15:25:46 -0000	1.44
@@ -255,17 +255,16 @@
 static int view_is_transaction_synced(struct mail_index_view *view,
 				      uint32_t seq, uoff_t offset)
 {
-	const struct mail_index_view_log_sync_pos *pos, *end;
-	size_t size;
+	const struct mail_index_view_log_sync_pos *pos;
+	unsigned int i, count;
 
-	if (view->log_syncs == NULL)
+	if (!array_is_created(&view->log_syncs))
 		return 0;
 
-	pos = buffer_get_data(view->log_syncs, &size);
-	end = CONST_PTR_OFFSET(pos, size);
-
-	for (; pos != end; pos++) {
-		if (pos->log_file_offset == offset && pos->log_file_seq == seq)
+	pos = array_get(&view->log_syncs, &count);
+	for (i = 0; i < count; i++) {
+		if (pos[i].log_file_offset == offset &&
+		    pos[i].log_file_seq == seq)
 			return 1;
 	}
 
@@ -450,8 +449,8 @@
 	if (ctx->sync_map_update)
 		mail_index_sync_map_deinit(&ctx->sync_map_ctx);
 
-	if (view->log_syncs != NULL && !ctx->skipped_some)
-		buffer_set_used_size(view->log_syncs, 0);
+	if (array_is_created(&view->log_syncs) && !ctx->skipped_some)
+		array_clear(&view->log_syncs);
 
 	if (!ctx->last_read && ctx->hdr != NULL &&
 	    ctx->data_offset != ctx->hdr->size) {
@@ -484,13 +483,14 @@
 					    uint32_t log_file_seq,
 					    uoff_t log_file_offset)
 {
-	struct mail_index_view_log_sync_pos pos;
+	struct mail_index_view_log_sync_pos *pos;
 
-	memset(&pos, 0, sizeof(pos));
-	pos.log_file_seq = log_file_seq;
-	pos.log_file_offset = log_file_offset;
+	if (!array_is_created(&view->log_syncs)) {
+		ARRAY_CREATE(&view->log_syncs, default_pool,
+                             struct mail_index_view_log_sync_pos, 32);
+	}
 
-	if (view->log_syncs == NULL)
-		view->log_syncs = buffer_create_dynamic(default_pool, 128);
-	buffer_append(view->log_syncs, &pos, sizeof(pos));
+	pos = array_append_space(&view->log_syncs);
+	pos->log_file_seq = log_file_seq;
+	pos->log_file_offset = log_file_offset;
 }

Index: mail-index-view.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-view.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- mail-index-view.c	4 Jul 2005 11:32:20 -0000	1.36
+++ mail-index-view.c	6 Jan 2006 15:25:46 -0000	1.37
@@ -36,12 +36,13 @@
 	mail_index_view_unlock(view);
 	mail_transaction_log_view_close(view->log_view);
 
-	if (view->log_syncs != NULL)
-		buffer_free(view->log_syncs);
+	if (array_is_created(&view->log_syncs))
+		array_free(&view->log_syncs);
 	mail_index_unmap(view->index, view->map);
-	mail_index_view_unref_maps(view);
-	if (view->map_refs != NULL)
-		buffer_free(view->map_refs);
+	if (array_is_created(&view->map_refs)) {
+		mail_index_view_unref_maps(view);
+		array_free(&view->map_refs);
+	}
 	i_free(view);
 }
 
@@ -123,40 +124,39 @@
 static void mail_index_view_ref_map(struct mail_index_view *view,
 				    struct mail_index_map *map)
 {
-	const struct mail_index_map *const *maps;
-	size_t i, size;
+	struct mail_index_map *const *maps;
+	unsigned int i, count;
 
-	if (view->map_refs != NULL) {
-		maps = buffer_get_data(view->map_refs, &size);
-		size /= sizeof(*maps);
+	if (array_is_created(&view->map_refs)) {
+		maps = array_get(&view->map_refs, &count);
 
-		for (i = 0; i < size; i++) {
+		/* if map is already referenced, do nothing */
+		for (i = 0; i < count; i++) {
 			if (maps[i] == map)
 				return;
 		}
 	} else {
-		view->map_refs = buffer_create_dynamic(default_pool, 128);
+		ARRAY_CREATE(&view->map_refs, default_pool,
+			     struct mail_index_map *, 4);
 	}
 
 	map->refcount++;
-	buffer_append(view->map_refs, &map, sizeof(map));
+	array_append(&view->map_refs, &map, 1);
 }
 
 void mail_index_view_unref_maps(struct mail_index_view *view)
 {
 	struct mail_index_map *const *maps;
-	size_t i, size;
+	unsigned int i, count;
 
-	if (view->map_refs == NULL)
+	if (!array_is_created(&view->map_refs))
 		return;
 
-	maps = buffer_get_data(view->map_refs, &size);
-	size /= sizeof(*maps);
-
-	for (i = 0; i < size; i++)
+	maps = array_get(&view->map_refs, &count);
+	for (i = 0; i < count; i++)
 		mail_index_unmap(view->index, maps[i]);
 
-	buffer_set_used_size(view->map_refs, 0);
+	array_clear(&view->map_refs);
 }
 
 static uint32_t _view_get_messages_count(struct mail_index_view *view)



More information about the dovecot-cvs mailing list