From: Aki Tuomi Date: Tue, 11 Nov 2025 06:47:47 +0000 (+0200) Subject: doveadm: dsync - Extract dsync_mailbox_export_init() parameters to a structure X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8086a584e25a771ff231ca11a8dfed748f7b1e56;p=thirdparty%2Fdovecot%2Fcore.git doveadm: dsync - Extract dsync_mailbox_export_init() parameters to a structure It's easier to extend in future --- diff --git a/src/doveadm/dsync/dsync-brain-mailbox.c b/src/doveadm/dsync/dsync-brain-mailbox.c index 965fb514f6..cdb20bd86e 100644 --- a/src/doveadm/dsync/dsync-brain-mailbox.c +++ b/src/doveadm/dsync/dsync-brain-mailbox.c @@ -345,13 +345,17 @@ int dsync_brain_sync_mailbox_open(struct dsync_brain *brain, exporter_flags |= DSYNC_MAILBOX_EXPORTER_FLAG_NO_HDR_HASHES; } + const struct dsync_mailbox_export_settings export_set = { + .last_common_uid = last_common_uid, + .flags = exporter_flags, + .hdr_hash_version = brain->hdr_hash_version, + .hashed_headers = brain->hashed_headers, + .parent_event = brain->event, + }; + brain->box_exporter = brain->backup_recv ? NULL : dsync_mailbox_export_init(brain->box, brain->log_scan, - last_common_uid, - exporter_flags, - brain->hdr_hash_version, - brain->hashed_headers, - brain->event); + &export_set); dsync_brain_sync_mailbox_init_remote(brain, remote_dsync_box); return 1; } diff --git a/src/doveadm/dsync/dsync-mailbox-export.c b/src/doveadm/dsync/dsync-mailbox-export.c index 5302795f4a..57b73fe814 100644 --- a/src/doveadm/dsync/dsync-mailbox-export.c +++ b/src/doveadm/dsync/dsync-mailbox-export.c @@ -502,11 +502,7 @@ dsync_mailbox_export_log_scan(struct dsync_mailbox_exporter *exporter, struct dsync_mailbox_exporter * dsync_mailbox_export_init(struct mailbox *box, struct dsync_transaction_log_scan *log_scan, - uint32_t last_common_uid, - enum dsync_mailbox_exporter_flags flags, - unsigned int hdr_hash_version, - const char *const *hashed_headers, - struct event *parent_event) + const struct dsync_mailbox_export_settings *set) { struct dsync_mailbox_exporter *exporter; pool_t pool; @@ -517,22 +513,22 @@ dsync_mailbox_export_init(struct mailbox *box, exporter->pool = pool; exporter->box = box; exporter->log_scan = log_scan; - exporter->last_common_uid = last_common_uid; + exporter->last_common_uid = set->last_common_uid; exporter->auto_export_mails = - (flags & DSYNC_MAILBOX_EXPORTER_FLAG_AUTO_EXPORT_MAILS) != 0; + (set->flags & DSYNC_MAILBOX_EXPORTER_FLAG_AUTO_EXPORT_MAILS) != 0; exporter->mails_have_guids = - (flags & DSYNC_MAILBOX_EXPORTER_FLAG_MAILS_HAVE_GUIDS) != 0; + (set->flags & DSYNC_MAILBOX_EXPORTER_FLAG_MAILS_HAVE_GUIDS) != 0; exporter->minimal_dmail_fill = - (flags & DSYNC_MAILBOX_EXPORTER_FLAG_MINIMAL_DMAIL_FILL) != 0; + (set->flags & DSYNC_MAILBOX_EXPORTER_FLAG_MINIMAL_DMAIL_FILL) != 0; exporter->export_received_timestamps = - (flags & DSYNC_MAILBOX_EXPORTER_FLAG_TIMESTAMPS) != 0; + (set->flags & DSYNC_MAILBOX_EXPORTER_FLAG_TIMESTAMPS) != 0; exporter->export_virtual_sizes = - (flags & DSYNC_MAILBOX_EXPORTER_FLAG_VSIZES) != 0; - exporter->hdr_hash_version = hdr_hash_version; + (set->flags & DSYNC_MAILBOX_EXPORTER_FLAG_VSIZES) != 0; + exporter->hdr_hash_version = set->hdr_hash_version; exporter->no_hdr_hashes = - (flags & DSYNC_MAILBOX_EXPORTER_FLAG_NO_HDR_HASHES) != 0; - exporter->hashed_headers = hashed_headers; - exporter->event = event_create(parent_event); + (set->flags & DSYNC_MAILBOX_EXPORTER_FLAG_NO_HDR_HASHES) != 0; + exporter->hashed_headers = set->hashed_headers; + exporter->event = event_create(set->parent_event); p_array_init(&exporter->requested_uids, pool, 16); p_array_init(&exporter->search_uids, pool, 16); diff --git a/src/doveadm/dsync/dsync-mailbox-export.h b/src/doveadm/dsync/dsync-mailbox-export.h index dfa6f029cc..f30ec8f148 100644 --- a/src/doveadm/dsync/dsync-mailbox-export.h +++ b/src/doveadm/dsync/dsync-mailbox-export.h @@ -10,14 +10,18 @@ enum dsync_mailbox_exporter_flags { DSYNC_MAILBOX_EXPORTER_FLAG_VSIZES = 0x40, }; +struct dsync_mailbox_export_settings { + uint32_t last_common_uid; + enum dsync_mailbox_exporter_flags flags; + unsigned int hdr_hash_version; + const char *const *hashed_headers; + struct event *parent_event; +}; + struct dsync_mailbox_exporter * dsync_mailbox_export_init(struct mailbox *box, struct dsync_transaction_log_scan *log_scan, - uint32_t last_common_uid, - enum dsync_mailbox_exporter_flags flags, - unsigned int hdr_hash_version, - const char *const *hashed_headers, - struct event *parent_event); + const struct dsync_mailbox_export_settings *set); /* Returns 1 if attribute was returned, 0 if no more attributes, -1 on error */ int dsync_mailbox_export_next_attr(struct dsync_mailbox_exporter *exporter, const struct dsync_mailbox_attribute **attr_r);