From: Timo Sirainen Date: Tue, 11 Apr 2023 11:26:52 +0000 (+0300) Subject: doveadm dump index: Add support for virtual2 header X-Git-Tag: 2.4.0~2800 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e1796f60ce3016fe88a117729f300c4e9c453e5;p=thirdparty%2Fdovecot%2Fcore.git doveadm dump index: Add support for virtual2 header --- diff --git a/src/doveadm/doveadm-dump-index.c b/src/doveadm/doveadm-dump-index.c index dada1817d3..9cb1842c35 100644 --- a/src/doveadm/doveadm-dump-index.c +++ b/src/doveadm/doveadm-dump-index.c @@ -106,6 +106,15 @@ struct virtual_mail_index_mailbox_record { uint32_t next_uid; uint64_t highest_modseq; }; +struct virtual_mail_index_ext2_header { + uint8_t version; + uint8_t ext_record_size; + uint16_t hdr_size; + uint32_t change_counter; +}; +struct virtual_mail_index_mailbox_ext2_record { + uint8_t guid[16]; +}; struct virtual_mail_index_record { uint32_t mailbox_id; uint32_t real_uid; @@ -313,6 +322,23 @@ static void dump_extension_header(struct mail_index *index, name += rec->name_len; } + } else if (strcmp(ext->name, "virtual2") == 0) { + const struct virtual_mail_index_ext2_header *hdr = data; + const struct virtual_mail_index_mailbox_ext2_record *rec; + unsigned int i, count; + + printf("header\n"); + printf(" - version .......... = %u\n", hdr->version); + printf(" - ext_record_size .. = %u\n", hdr->ext_record_size); + printf(" - hdr_size ......... = %u\n", hdr->hdr_size); + printf(" - change_counter ... = %u\n", hdr->change_counter); + + count = (ext->hdr_size - hdr->hdr_size) / hdr->ext_record_size; + for (i = 0; i < count; i++, rec++) { + rec = CONST_PTR_OFFSET(data, hdr->hdr_size + + i * hdr->ext_record_size); + printf(" - guid = %s\n", guid_128_to_string(rec->guid)); + } } else if (strcmp(ext->name, "list") == 0) { printf("header ........ = %s\n", binary_to_hex(data, ext->hdr_size));