[dovecot-cvs] dovecot/src/lib-index/maildir maildir-index.h,1.9,1.10 maildir-sync.c,1.15,1.16

cras at procontrol.fi cras at procontrol.fi
Sat Nov 2 22:10:23 EET 2002


Update of /home/cvs/dovecot/src/lib-index/maildir
In directory danu:/tmp/cvs-serv8907/lib-index/maildir

Modified Files:
	maildir-index.h maildir-sync.c 
Log Message:
Mostly mbox locking/syncing fixes. Still some problems though.



Index: maildir-index.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/maildir/maildir-index.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- maildir-index.h	27 Oct 2002 06:37:18 -0000	1.9
+++ maildir-index.h	2 Nov 2002 20:10:20 -0000	1.10
@@ -13,7 +13,7 @@
 const char *maildir_filename_set_flags(const char *fname, MailFlags flags);
 
 int maildir_index_rebuild(MailIndex *index);
-int maildir_index_sync(MailIndex *index);
+int maildir_index_sync(MailIndex *index, MailLockType lock_type, int *changes);
 
 int maildir_index_append_file(MailIndex *index, const char *dir,
 			      const char *fname);

Index: maildir-sync.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/maildir/maildir-sync.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- maildir-sync.c	27 Oct 2002 06:37:18 -0000	1.15
+++ maildir-sync.c	2 Nov 2002 20:10:20 -0000	1.16
@@ -249,7 +249,7 @@
 	return !failed;
 }
 
-int maildir_index_sync(MailIndex *index)
+int maildir_index_sync(MailIndex *index, MailLockType lock_type, int *changes)
 {
 	struct stat sti, std;
 	struct utimbuf ut;
@@ -258,6 +258,9 @@
 
 	i_assert(index->lock_type != MAIL_LOCK_SHARED);
 
+	if (changes != NULL)
+		*changes = FALSE;
+
 	if (index->fd == -1) {
 		/* anon-mmaped */
 		index_mtime = index->file_sync_stamp;
@@ -275,6 +278,7 @@
 		return index_file_set_syscall_error(index, cur_dir, "stat()");
 
 	if (std.st_mtime != index_mtime) {
+		if (changes != NULL) *changes = TRUE;
 		if (!maildir_index_sync_dir(index, cur_dir))
 			return FALSE;
 	}
@@ -285,6 +289,8 @@
 		return index_file_set_syscall_error(index, new_dir, "stat()");
 
 	if (std.st_mtime != index_mtime) {
+		if (changes != NULL) *changes = TRUE;
+
 		if (!maildir_index_build_dir(index, new_dir, cur_dir))
 			return FALSE;
 
@@ -324,5 +330,5 @@
 			return index_set_syscall_error(index, "utime()");
 	}
 
-	return TRUE;
+	return index->set_lock(index, lock_type);
 }




More information about the dovecot-cvs mailing list