From d71c7b5cf283fe1c534e35ba353fe34f27ab1b7c Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 19 Jan 2021 12:48:16 +0200 Subject: [PATCH] lib-index: Add and use MAIL_INDEX_MAP_HDR_OFFSET() helper macro --- src/doveadm/doveadm-dump-index.c | 2 +- src/lib-index/mail-index-fsck.c | 2 +- src/lib-index/mail-index-map-hdr.c | 2 +- src/lib-index/mail-index-map.c | 7 +++---- src/lib-index/mail-index-modseq.c | 6 +++--- src/lib-index/mail-index-private.h | 2 ++ src/lib-index/mail-index-sync-keywords.c | 2 +- src/lib-index/mail-index-view.c | 2 +- src/lib-index/mail-index-write.c | 2 +- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/doveadm/doveadm-dump-index.c b/src/doveadm/doveadm-dump-index.c index 765e5bd1d4..c664811437 100644 --- a/src/doveadm/doveadm-dump-index.c +++ b/src/doveadm/doveadm-dump-index.c @@ -212,7 +212,7 @@ static void dump_extension_header(struct mail_index *index, /* add some padding, since we don't bother to handle undersized headers correctly */ buf = t_malloc0(MALLOC_ADD(ext->hdr_size, 128)); - data = CONST_PTR_OFFSET(index->map->hdr_base, ext->hdr_offset); + data = MAIL_INDEX_MAP_HDR_OFFSET(index->map, ext->hdr_offset); memcpy(buf, data, ext->hdr_size); data = buf; diff --git a/src/lib-index/mail-index-fsck.c b/src/lib-index/mail-index-fsck.c index 1c3531959c..a6b2eaf434 100644 --- a/src/lib-index/mail-index-fsck.c +++ b/src/lib-index/mail-index-fsck.c @@ -157,7 +157,7 @@ mail_index_fsck_keywords(struct mail_index *index, struct mail_index_map *map, hdr_offset = ext_offset + mail_index_map_ext_hdr_offset(sizeof(MAIL_INDEX_EXT_KEYWORDS)-1); - kw_hdr = CONST_PTR_OFFSET(map->hdr_base, hdr_offset); + kw_hdr = MAIL_INDEX_MAP_HDR_OFFSET(map, hdr_offset); keywords_count = kw_hdr->keywords_count; kw_rec = (const void *)(kw_hdr + 1); diff --git a/src/lib-index/mail-index-map-hdr.c b/src/lib-index/mail-index-map-hdr.c index ba48beaf63..b55c9cf82a 100644 --- a/src/lib-index/mail-index-map-hdr.c +++ b/src/lib-index/mail-index-map-hdr.c @@ -80,7 +80,7 @@ int mail_index_map_parse_keywords(struct mail_index_map *map) - const char names[] * keywords_count */ i_assert(ext->hdr_offset < map->hdr.header_size); - kw_hdr = CONST_PTR_OFFSET(map->hdr_base, ext->hdr_offset); + kw_hdr = MAIL_INDEX_MAP_HDR_OFFSET(map, ext->hdr_offset); kw_rec = (const void *)(kw_hdr + 1); name = (const char *)(kw_rec + kw_hdr->keywords_count); diff --git a/src/lib-index/mail-index-map.c b/src/lib-index/mail-index-map.c index a8faaa02e0..fbd7df662f 100644 --- a/src/lib-index/mail-index-map.c +++ b/src/lib-index/mail-index-map.c @@ -122,7 +122,7 @@ int mail_index_map_ext_get_next(struct mail_index_map *map, - 64bit alignment padding */ name_offset = offset + sizeof(*ext_hdr); - ext_hdr = CONST_PTR_OFFSET(map->hdr_base, offset); + ext_hdr = MAIL_INDEX_MAP_HDR_OFFSET(map, offset); if (offset + sizeof(*ext_hdr) >= map->hdr.header_size) return -1; @@ -130,7 +130,7 @@ int mail_index_map_ext_get_next(struct mail_index_map *map, if (offset > map->hdr.header_size) return -1; - *name_r = t_strndup(CONST_PTR_OFFSET(map->hdr_base, name_offset), + *name_r = t_strndup(MAIL_INDEX_MAP_HDR_OFFSET(map, name_offset), ext_hdr->name_size); if (strcmp(*name_r, str_sanitize(*name_r, SIZE_MAX)) != 0) { /* we allow only plain ASCII names, so this extension @@ -356,8 +356,7 @@ static void mail_index_map_copy_header(struct mail_index_map *dest, I_MIN(sizeof(dest->hdr), src->hdr.base_header_size)); if (src != dest) { buffer_write(dest->hdr_copy_buf, src->hdr.base_header_size, - CONST_PTR_OFFSET(src->hdr_base, - src->hdr.base_header_size), + MAIL_INDEX_MAP_HDR_OFFSET(src, src->hdr.base_header_size), src->hdr.header_size - src->hdr.base_header_size); } dest->hdr_base = buffer_get_modifiable_data(dest->hdr_copy_buf, NULL); diff --git a/src/lib-index/mail-index-modseq.c b/src/lib-index/mail-index-modseq.c index c21dcd103b..2f9bff01da 100644 --- a/src/lib-index/mail-index-modseq.c +++ b/src/lib-index/mail-index-modseq.c @@ -104,7 +104,7 @@ mail_index_map_get_modseq_header(struct mail_index_map *map) if (ext->hdr_size != sizeof(struct mail_index_modseq_header)) return NULL; - return CONST_PTR_OFFSET(map->hdr_base, ext->hdr_offset); + return MAIL_INDEX_MAP_HDR_OFFSET(map, ext->hdr_offset); } uint64_t mail_index_map_modseq_get_highest(struct mail_index_map *map) @@ -406,7 +406,7 @@ static void mail_index_modseq_sync_init(struct mail_index_modseq_sync *ctx) ext = array_idx(&map->extensions, ext_map_idx); /* get the current highest_modseq. don't change any modseq below it. */ - hdr = CONST_PTR_OFFSET(map->hdr_base, ext->hdr_offset); + hdr = MAIL_INDEX_MAP_HDR_OFFSET(map, ext->hdr_offset); /* Scan logs for updates between ext_hdr.log_* .. view position. There are two reasons why there could be any: @@ -498,7 +498,7 @@ static void mail_index_modseq_update_header(struct mail_index_modseq_sync *ctx) highest_modseq = mail_transaction_log_view_get_prev_modseq(view->log_view); ext = array_idx(&map->extensions, ext_map_idx); - old_modseq_hdr = CONST_PTR_OFFSET(map->hdr_base, ext->hdr_offset); + old_modseq_hdr = MAIL_INDEX_MAP_HDR_OFFSET(map, ext->hdr_offset); if (old_modseq_hdr->log_seq < log_seq || (old_modseq_hdr->log_seq == log_seq && diff --git a/src/lib-index/mail-index-private.h b/src/lib-index/mail-index-private.h index e523e4dfde..2a41753ea0 100644 --- a/src/lib-index/mail-index-private.h +++ b/src/lib-index/mail-index-private.h @@ -118,6 +118,8 @@ struct mail_index_record_map { uint32_t last_appended_uid; }; +#define MAIL_INDEX_MAP_HDR_OFFSET(map, hdr_offset) \ + CONST_PTR_OFFSET((map)->hdr_base, hdr_offset) struct mail_index_map { struct mail_index *index; int refcount; diff --git a/src/lib-index/mail-index-sync-keywords.c b/src/lib-index/mail-index-sync-keywords.c index 51e181beae..1cbe07a765 100644 --- a/src/lib-index/mail-index-sync-keywords.c +++ b/src/lib-index/mail-index-sync-keywords.c @@ -45,7 +45,7 @@ keywords_get_header_buf(struct mail_index_map *map, struct mail_index_keyword_header new_kw_hdr; uint32_t offset; - kw_hdr = CONST_PTR_OFFSET(map->hdr_base, ext->hdr_offset); + kw_hdr = MAIL_INDEX_MAP_HDR_OFFSET(map, ext->hdr_offset); kw_rec = (const void *)(kw_hdr + 1); name = (const char *)(kw_rec + kw_hdr->keywords_count); diff --git a/src/lib-index/mail-index-view.c b/src/lib-index/mail-index-view.c index d4d02ac239..6b544a6def 100644 --- a/src/lib-index/mail-index-view.c +++ b/src/lib-index/mail-index-view.c @@ -401,7 +401,7 @@ static void view_get_header_ext(struct mail_index_view *view, } ext = array_idx(&map->extensions, idx); - *data_r = CONST_PTR_OFFSET(map->hdr_base, ext->hdr_offset); + *data_r = MAIL_INDEX_MAP_HDR_OFFSET(map, ext->hdr_offset); *data_size_r = ext->hdr_size; } diff --git a/src/lib-index/mail-index-write.c b/src/lib-index/mail-index-write.c index 634e011405..5459ebadf0 100644 --- a/src/lib-index/mail-index-write.c +++ b/src/lib-index/mail-index-write.c @@ -80,7 +80,7 @@ static int mail_index_recreate(struct mail_index *index) base_size = I_MIN(map->hdr.base_header_size, sizeof(map->hdr)); o_stream_nsend(output, &map->hdr, base_size); - o_stream_nsend(output, CONST_PTR_OFFSET(map->hdr_base, base_size), + o_stream_nsend(output, MAIL_INDEX_MAP_HDR_OFFSET(map, base_size), map->hdr.header_size - base_size); o_stream_nsend(output, map->rec_map->records, map->rec_map->records_count * map->hdr.record_size); -- 2.47.3