changeset 17270:5798bb0167b9

doveadm dump: Added support for mobox extensions in dovecot.index.
author Timo Sirainen <tss@iki.fi>
date Fri, 25 Apr 2014 16:35:51 +0300
parents b53ebeaba6aa
children bb5deb884303
files src/doveadm/doveadm-dump-index.c
diffstat 1 files changed, 41 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-dump-index.c	Fri Apr 25 16:18:09 2014 +0300
+++ b/src/doveadm/doveadm-dump-index.c	Fri Apr 25 16:35:51 2014 +0300
@@ -53,6 +53,25 @@
 	unsigned char guid[GUID_128_SIZE];
 	unsigned char oid[GUID_128_SIZE];
 };
+struct mobox_mail_index_header {
+	uint32_t rebuild_count;
+	uint32_t map_uid_validity;
+	uint8_t unused[4];
+	guid_128_t mailbox_guid;
+};
+struct mobox_mail_index_record {
+	uint32_t map_uid;
+	uint32_t save_date;
+};
+struct mobox_map_mail_index_header {
+	uint32_t rebuild_count;
+};
+
+struct mobox_map_mail_index_record {
+	uint32_t offset;
+	uint32_t size;
+	guid_128_t oid;
+};
 struct mailbox_list_index_record {
 	uint32_t name_id;
 	uint32_t parent_uid;
@@ -184,6 +203,19 @@
 		printf(" - mailbox_guid .. = %s\n",
 		       guid_128_to_string(hdr->mailbox_guid));
 		printf(" - flags ......... = 0x%x\n", hdr->flags);
+	} else if (strcmp(ext->name, "mobox-hdr") == 0) {
+		const struct mobox_mail_index_header *hdr = data;
+
+		printf("header\n");
+		printf(" - rebuild_count    .. = %u\n", hdr->rebuild_count);
+		printf(" - map_uid_validity .. = %u\n", hdr->map_uid_validity);
+		printf(" - mailbox_guid ...... = %s\n",
+		       guid_128_to_string(hdr->mailbox_guid));
+	} else if (strcmp(ext->name, "mobox-map") == 0) {
+		const struct mobox_map_mail_index_header *hdr = data;
+
+		printf("header\n");
+		printf(" - rebuild_count    .. = %u\n", hdr->rebuild_count);
 	} else if (strcmp(ext->name, "modseq") == 0) {
 		const struct mail_index_modseq_header *hdr = data;
 
@@ -579,6 +611,15 @@
 			const struct obox_mail_index_record *orec = data;
 			printf("                   : guid = %s\n", guid_128_to_string(orec->guid));
 			printf("                   : oid  = %s\n", guid_128_to_string(orec->oid));
+		} else if (strcmp(ext[i].name, "mobox") == 0) {
+			const struct mobox_mail_index_record *orec = data;
+			printf("                   : map_uid   = %u\n", orec->map_uid);
+			printf("                   : save_date = %u (%s)\n", orec->save_date, unixdate2str(orec->save_date));
+		} else if (strcmp(ext[i].name, "mobox-map") == 0) {
+			const struct mobox_map_mail_index_record *orec = data;
+			printf("                   : offset = %u\n", orec->offset);
+			printf("                   : size   = %u\n", orec->size);
+			printf("                   : oid    = %s\n", guid_128_to_string(orec->oid));
 		} else if (strcmp(ext[i].name, "list") == 0) {
 			const struct mailbox_list_index_record *lrec = data;
 			printf("                   : name_id      = %u\n", lrec->name_id);