[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