[dovecot-cvs] dovecot/src/lib-index mail-index-fsck.c, 1.19, 1.20 mail-index-sync-update.c, 1.15, 1.16 mail-index.c, 1.121, 1.122 mail-index.h, 1.109, 1.110

cras at procontrol.fi cras at procontrol.fi
Sun May 23 01:23:31 EEST 2004


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

Modified Files:
	mail-index-fsck.c mail-index-sync-update.c mail-index.c 
	mail-index.h 
Log Message:
Recent flag fixes. Should work perfectly now with maildir.



Index: mail-index-fsck.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-fsck.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- a/mail-index-fsck.c	1 May 2004 16:22:54 -0000	1.19
+++ b/mail-index-fsck.c	22 May 2004 22:23:29 -0000	1.20
@@ -41,6 +41,7 @@
 	}
 
 	hdr.messages_count = 0;
+	hdr.recent_messages_count = 0;
 	hdr.seen_messages_count = 0;
 	hdr.deleted_messages_count = 0;
 
@@ -56,6 +57,8 @@
 		}
 
 		hdr.messages_count++;
+		if ((rec->flags & MAIL_RECENT) != 0)
+			hdr.recent_messages_count++;
 		if ((rec->flags & MAIL_SEEN) != 0)
 			hdr.seen_messages_count++;
 		if ((rec->flags & MAIL_DELETED) != 0)
@@ -88,6 +91,7 @@
                 hdr.first_deleted_uid_lowwater = hdr.next_uid;
 
         CHECK(messages_count, !=);
+        CHECK(recent_messages_count, !=);
         CHECK(seen_messages_count, !=);
         CHECK(deleted_messages_count, !=);
 

Index: mail-index-sync-update.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-sync-update.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- a/mail-index-sync-update.c	22 May 2004 21:30:42 -0000	1.15
+++ b/mail-index-sync-update.c	22 May 2004 22:23:29 -0000	1.16
@@ -20,20 +20,28 @@
 void mail_index_header_update_counts(struct mail_index_header *hdr,
 				     uint8_t old_flags, uint8_t new_flags)
 {
+	if (((old_flags ^ new_flags) & MAIL_RECENT) != 0) {
+		/* different recent-flag */
+		if ((old_flags & MAIL_RECENT) == 0)
+			hdr->recent_messages_count++;
+		else if (--hdr->recent_messages_count == 0)
+			hdr->first_recent_uid_lowwater = hdr->next_uid;
+	}
+
 	if (((old_flags ^ new_flags) & MAIL_SEEN) != 0) {
 		/* different seen-flag */
-		if ((old_flags & MAIL_SEEN) == 0)
-			hdr->seen_messages_count++;
-		else
+		if ((old_flags & MAIL_SEEN) != 0)
 			hdr->seen_messages_count--;
+		else if (++hdr->seen_messages_count == hdr->messages_count)
+			hdr->first_unseen_uid_lowwater = hdr->next_uid;
 	}
 
 	if (((old_flags ^ new_flags) & MAIL_DELETED) != 0) {
 		/* different deleted-flag */
 		if ((old_flags & MAIL_DELETED) == 0)
 			hdr->deleted_messages_count++;
-		else
-			hdr->deleted_messages_count--;
+		else if (--hdr->deleted_messages_count == 0)
+			hdr->first_deleted_uid_lowwater = hdr->next_uid;
 	}
 }
 

Index: mail-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -d -r1.121 -r1.122
--- a/mail-index.c	16 May 2004 20:20:24 -0000	1.121
+++ b/mail-index.c	22 May 2004 22:23:29 -0000	1.122
@@ -77,7 +77,8 @@
 	if (hdr->next_uid == 0)
 		return 0;
 
-	if (hdr->seen_messages_count > hdr->messages_count ||
+	if (hdr->recent_messages_count > hdr->messages_count ||
+	    hdr->seen_messages_count > hdr->messages_count ||
 	    hdr->deleted_messages_count > hdr->messages_count)
 		return 0;
 	if (hdr->first_recent_uid_lowwater > hdr->next_uid ||

Index: mail-index.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.h,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -d -r1.109 -r1.110
--- a/mail-index.h	22 May 2004 21:30:42 -0000	1.109
+++ b/mail-index.h	22 May 2004 22:23:29 -0000	1.110
@@ -6,7 +6,7 @@
 #define MAIL_INDEX_MAJOR_VERSION 4
 #define MAIL_INDEX_MINOR_VERSION 0
 
-#define MAIL_INDEX_HEADER_MIN_SIZE 68
+#define MAIL_INDEX_HEADER_MIN_SIZE 72
 
 /* Number of keywords in mail_index_record. */
 #define INDEX_KEYWORDS_COUNT (3*8)
@@ -77,6 +77,7 @@
 	uint32_t next_uid;
 
 	uint32_t messages_count;
+	uint32_t recent_messages_count;
 	uint32_t seen_messages_count;
 	uint32_t deleted_messages_count;
 



More information about the dovecot-cvs mailing list