changeset 127:90a604e78df1 HEAD

previous fix for updating initial message flags wasn't done correctly
author Timo Sirainen <tss@iki.fi>
date Tue, 03 Sep 2002 22:56:49 +0300
parents cf7de0db6ba8
children 879dcb6e209a
files src/lib-index/mail-index.c src/lib-index/maildir/maildir-build.c src/lib-index/mbox/mbox-append.c
diffstat 3 files changed, 15 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index.c	Tue Sep 03 22:31:00 2002 +0300
+++ b/src/lib-index/mail-index.c	Tue Sep 03 22:56:49 2002 +0300
@@ -1137,8 +1137,8 @@
 	return seq;
 }
 
-static void index_mark_flag_changes(MailIndex *index, MailIndexRecord *rec,
-				    MailFlags old_flags, MailFlags new_flags)
+void mail_index_mark_flag_changes(MailIndex *index, MailIndexRecord *rec,
+				  MailFlags old_flags, MailFlags new_flags)
 {
 	if ((old_flags & MAIL_SEEN) == 0 && (new_flags & MAIL_SEEN)) {
 		/* unseen -> seen */
@@ -1222,6 +1222,7 @@
 	uoff_t pos;
 
 	i_assert(index->lock_type == MAIL_LOCK_EXCLUSIVE);
+	i_assert(seq != 0);
 	i_assert(rec->uid != 0);
 
 	if (seq != 0 && index->modifylog != NULL) {
@@ -1291,7 +1292,7 @@
 	}
 
 	hdr->messages_count--;
-	index_mark_flag_changes(index, rec, rec->msg_flags, 0);
+	mail_index_mark_flag_changes(index, rec, rec->msg_flags, 0);
 
 	if ((hdr->first_hole_position - sizeof(MailIndexHeader)) /
 	    sizeof(MailIndexRecord) == hdr->messages_count) {
@@ -1311,12 +1312,12 @@
 			    int external_change)
 {
 	i_assert(index->lock_type == MAIL_LOCK_EXCLUSIVE);
-	i_assert(seq != 0 || !external_change);
+	i_assert(seq != 0);
 
 	if (flags == rec->msg_flags)
 		return TRUE; /* no changes */
 
-        index_mark_flag_changes(index, rec, rec->msg_flags, flags);
+        mail_index_mark_flag_changes(index, rec, rec->msg_flags, flags);
 
 	rec->msg_flags = flags;
 	return index->modifylog == NULL ? TRUE :
@@ -1346,7 +1347,7 @@
 	}
 
 	index->header->messages_count++;
-        index_mark_flag_changes(index, *rec, 0, (*rec)->msg_flags);
+        mail_index_mark_flag_changes(index, *rec, 0, (*rec)->msg_flags);
 
 	if (index->hash != NULL)
 		mail_hash_update(index->hash, (*rec)->uid, (uoff_t)pos);
--- a/src/lib-index/maildir/maildir-build.c	Tue Sep 03 22:31:00 2002 +0300
+++ b/src/lib-index/maildir/maildir-build.c	Tue Sep 03 22:56:49 2002 +0300
@@ -60,6 +60,10 @@
 	if (rec == NULL)
 		return FALSE;
 
+	/* set message flags from file name */
+	rec->msg_flags = maildir_filename_get_flags(fname, 0);
+	mail_index_mark_flag_changes(index, rec, 0, rec->msg_flags);
+
 	update = index->update_begin(index, rec);
 
 	/* set the location */
@@ -75,11 +79,6 @@
 		return FALSE;
 	}
 
-	/* set message flags from file name, after location field is saved */
-	if (!index->update_flags(index, rec, 0,
-				 maildir_filename_get_flags(fname, 0), FALSE))
-		return FALSE;
-
 	return TRUE;
 }
 
--- a/src/lib-index/mbox/mbox-append.c	Tue Sep 03 22:31:00 2002 +0300
+++ b/src/lib-index/mbox/mbox-append.c	Tue Sep 03 22:56:49 2002 +0300
@@ -139,6 +139,10 @@
 	if (rec == NULL)
 		return FALSE;
 
+	/* save message flags */
+	rec->msg_flags = ctx.flags;
+	mail_index_mark_flag_changes(index, rec, 0, rec->msg_flags);
+
 	update = index->update_begin(index, rec);
 
 	/* location = offset to beginning of headers in message */
@@ -171,10 +175,6 @@
 		return FALSE;
 	}
 
-	/* save message flags, after location field is saved */
-	if (!index->update_flags(index, rec, 0, ctx.flags, FALSE))
-		return FALSE;
-
 	return TRUE;
 }