[dovecot-cvs] dovecot/src/lib-index mail-index-private.h, 1.63, 1.64 mail-index.c, 1.219, 1.220 mail-index.h, 1.157, 1.158

cras at dovecot.org cras at dovecot.org
Thu Jan 19 01:04:18 EET 2006


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

Modified Files:
	mail-index-private.h mail-index.c mail-index.h 
Log Message:
Fixed mail_index_move_to_memory() to work better and made it public



Index: mail-index-private.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-private.h,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- mail-index-private.h	14 Jan 2006 18:47:34 -0000	1.63
+++ mail-index-private.h	18 Jan 2006 23:04:15 -0000	1.64
@@ -256,7 +256,6 @@
 void mail_index_view_transaction_unref(struct mail_index_view *view);
 
 void mail_index_set_inconsistent(struct mail_index *index);
-int mail_index_move_to_memory(struct mail_index *index);
 
 int mail_index_set_error(struct mail_index *index, const char *fmt, ...)
 	__attr_format__(2, 3);

Index: mail-index.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.219
retrieving revision 1.220
diff -u -d -r1.219 -r1.220
--- mail-index.c	14 Jan 2006 18:47:34 -0000	1.219
+++ mail-index.c	18 Jan 2006 23:04:15 -0000	1.220
@@ -1695,8 +1695,28 @@
 
 int mail_index_move_to_memory(struct mail_index *index)
 {
+	struct mail_index_map *map;
+	int ret = 0;
+
+	/* set the index as being into memory */
 	i_free_and_null(index->dir);
-	return mail_transaction_log_move_to_memory(index->log);
+
+	/* move index map to memory */
+	map = mail_index_map_clone(index->map, index->map->hdr.record_size);
+	mail_index_unmap(index, &index->map);
+	index->map = map;
+	index->hdr = &map->hdr;
+
+	/* move transaction log to memory */
+	if (mail_transaction_log_move_to_memory(index->log) < 0)
+		ret = -1;
+
+	/* close the index file. */
+	if (close(index->fd) < 0)
+		mail_index_set_syscall_error(index, "close()");
+	index->fd = -1;
+
+	return ret;
 }
 
 void mail_index_mark_corrupted(struct mail_index *index)

Index: mail-index.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index.h,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -d -r1.157 -r1.158
--- mail-index.h	14 Jan 2006 18:47:35 -0000	1.157
+++ mail-index.h	18 Jan 2006 23:04:15 -0000	1.158
@@ -159,6 +159,9 @@
 		    enum mail_index_lock_method lock_method);
 void mail_index_close(struct mail_index *index);
 
+/* Move the index into memory. Returns 0 if ok, -1 if error occurred. */
+int mail_index_move_to_memory(struct mail_index *index);
+
 struct mail_cache *mail_index_get_cache(struct mail_index *index);
 
 /* Refresh index so mail_index_lookup*() will return latest values. Note that



More information about the dovecot-cvs mailing list