[dovecot-cvs] dovecot/src/lib-storage/index index-mail.c, 1.29, 1.30 index-mail.h, 1.11, 1.12 index-storage.c, 1.47, 1.48 index-storage.h, 1.58, 1.59

cras at procontrol.fi cras at procontrol.fi
Thu May 6 04:22:27 EEST 2004


Update of /home/cvs/dovecot/src/lib-storage/index
In directory talvi:/tmp/cvs-serv13512/src/lib-storage/index

Modified Files:
	index-mail.c index-mail.h index-storage.c index-storage.h 
Log Message:
mbox code compiles again, but syncing is only partially implemented so
accessing mboxes fails..

Also some cleanups to index-storage and maildir code.



Index: index-mail.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-mail.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- index-mail.c	2 May 2004 20:32:16 -0000	1.29
+++ index-mail.c	6 May 2004 01:22:25 -0000	1.30
@@ -200,6 +200,21 @@
 	return data->parts;
 }
 
+time_t index_mail_get_received_date(struct mail *_mail)
+{
+	struct index_mail *mail = (struct index_mail *) _mail;
+	struct index_mail_data *data = &mail->data;
+
+	if (data->received_date == (time_t)-1 &&
+	    (mail->wanted_fields & MAIL_FETCH_RECEIVED_DATE) == 0) {
+		data->received_date = index_mail_get_cached_received_date(mail);
+		if (data->received_date != (time_t)-1)
+			return data->received_date;
+	}
+
+	return data->received_date;
+}
+
 time_t index_mail_get_date(struct mail *_mail, int *timezone)
 {
 	struct index_mail *mail = (struct index_mail *) _mail;

Index: index-mail.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-mail.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- index-mail.h	27 Apr 2004 20:25:54 -0000	1.11
+++ index-mail.h	6 May 2004 01:22:25 -0000	1.12
@@ -94,6 +94,7 @@
 
 const struct mail_full_flags *index_mail_get_flags(struct mail *_mail);
 const struct message_part *index_mail_get_parts(struct mail *_mail);
+time_t index_mail_get_received_date(struct mail *_mail);
 time_t index_mail_get_date(struct mail *_mail, int *timezone);
 uoff_t index_mail_get_size(struct mail *_mail);
 struct istream *index_mail_init_stream(struct index_mail *mail,

Index: index-storage.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-storage.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- index-storage.c	3 May 2004 14:37:49 -0000	1.47
+++ index-storage.c	6 May 2004 01:22:25 -0000	1.48
@@ -39,8 +39,11 @@
 	index_storage_refcount++;
 }
 
-void index_storage_deinit(struct index_storage *storage __attr_unused__)
+void index_storage_deinit(struct index_storage *storage)
 {
+	i_free(storage->storage.namespace);
+	i_free(storage->storage.error);
+
 	if (--index_storage_refcount > 0)
 		return;
 
@@ -243,10 +246,10 @@
 	return ret;
 }
 
-static void lock_notify(enum mailbox_lock_notify_type notify_type,
-			unsigned int secs_left, void *context)
+void index_storage_lock_notify(struct index_mailbox *ibox,
+			       enum mailbox_lock_notify_type notify_type,
+			       unsigned int secs_left)
 {
-	struct index_mailbox *ibox = context;
 	struct index_storage *storage = ibox->storage;
 	const char *str;
 	time_t now;
@@ -293,7 +296,7 @@
 	}
 }
 
-void index_storage_reset_lock_notify(struct index_mailbox *ibox)
+void index_storage_lock_notify_reset(struct index_mailbox *ibox)
 {
 	ibox->next_lock_notify = time(NULL) + LOCK_NOTIFY_INTERVAL;
 	ibox->last_notify_type = MAILBOX_LOCK_NOTIFY_NONE;

Index: index-storage.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/index-storage.h,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- index-storage.h	2 May 2004 20:32:16 -0000	1.58
+++ index-storage.h	6 May 2004 01:22:25 -0000	1.59
@@ -1,6 +1,7 @@
 #ifndef __INDEX_STORAGE_H
 #define __INDEX_STORAGE_H
 
+#include "file-dotlock.h"
 #include "mail-storage-private.h"
 #include "mail-index.h"
 #include "index-mail.h"
@@ -74,7 +75,21 @@
 	uint32_t commit_log_file_seq;
 	uoff_t commit_log_file_offset;
 
-	/* sync: */
+	/* mbox: */
+	int mbox_fd;
+	struct istream *mbox_stream, *mbox_file_stream;
+	int mbox_lock_type;
+	dev_t mbox_dev;
+	ino_t mbox_ino;
+	unsigned int mbox_locks;
+	struct dotlock mbox_dotlock;
+	unsigned int mbox_lock_id;
+
+	buffer_t *mbox_data_buf;
+	const uoff_t *mbox_data;
+	uint32_t mbox_data_count;
+
+	/* maildir sync: */
 	struct maildir_uidlist *uidlist;
 	time_t last_new_mtime, last_cur_mtime, last_new_sync_time;
 	time_t dirty_cur_time;
@@ -99,7 +114,11 @@
 };
 
 int mail_storage_set_index_error(struct index_mailbox *ibox);
-void index_storage_reset_lock_notify(struct index_mailbox *ibox);
+
+void index_storage_lock_notify(struct index_mailbox *ibox,
+			       enum mailbox_lock_notify_type notify_type,
+			       unsigned int secs_left);
+void index_storage_lock_notify_reset(struct index_mailbox *ibox);
 
 struct mail_index *
 index_storage_alloc(const char *index_dir,



More information about the dovecot-cvs mailing list