]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm dump: Added support for mobox extensions in dovecot.index.
authorTimo Sirainen <tss@iki.fi>
Fri, 25 Apr 2014 13:35:51 +0000 (16:35 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 25 Apr 2014 13:35:51 +0000 (16:35 +0300)
src/doveadm/doveadm-dump-index.c

index 0a0d2c7c893272c169efe03c021f289516f7daac..a46578e68487b20f3c8179392cbb589b5d1c89fc 100644 (file)
@@ -53,6 +53,25 @@ struct obox_mail_index_record {
        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 @@ static void dump_extension_header(struct mail_index *index,
                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 @@ static void dump_record(struct mail_index_view *view, unsigned int seq)
                        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);