From: Timo Sirainen Date: Tue, 11 Apr 2023 08:13:27 +0000 (+0300) Subject: doveadm-save: Add -r received-date parameter X-Git-Tag: 2.4.0~2801 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be9347f55465f8d8fb5d5795d169b120c72dba7e;p=thirdparty%2Fdovecot%2Fcore.git doveadm-save: Add -r received-date parameter --- diff --git a/src/doveadm/doveadm-mail-save.c b/src/doveadm/doveadm-mail-save.c index a45778259f..8b8990724c 100644 --- a/src/doveadm/doveadm-mail-save.c +++ b/src/doveadm/doveadm-mail-save.c @@ -10,6 +10,7 @@ struct save_cmd_context { const char *mailbox; const char *guid; uint32_t uid; + time_t received_date; }; static int @@ -45,6 +46,8 @@ cmd_save_to_mailbox(struct save_cmd_context *ctx, struct mailbox *box, mailbox_save_set_uid(save_ctx, ctx->uid); if (ctx->guid != NULL) mailbox_save_set_guid(save_ctx, ctx->guid); + if (ctx->received_date != (time_t)-1) + mailbox_save_set_received_date(save_ctx, ctx->received_date, 0); if (mailbox_save_begin(&save_ctx, input) < 0) { e_error(ctx->ctx.cctx->event, "Saving failed: %s", mailbox_get_last_internal_error(box, NULL)); @@ -110,10 +113,19 @@ static void cmd_save_init(struct doveadm_mail_cmd_context *_ctx) struct doveadm_cmd_context *cctx = _ctx->cctx; struct save_cmd_context *ctx = container_of(_ctx, struct save_cmd_context, ctx); + const char *str; + bool utc; (void)doveadm_cmd_param_str(cctx, "mailbox", &ctx->mailbox); (void)doveadm_cmd_param_uint32(cctx, "uid", &ctx->uid); (void)doveadm_cmd_param_str(cctx, "guid", &ctx->guid); + if (!doveadm_cmd_param_str(cctx, "received-date", &str)) + ctx->received_date = (time_t)-1; + else { + if (mail_parse_human_timestamp(str, &ctx->received_date, &utc) < 0) + i_fatal("Invalid received-date '%s'", str); + } + doveadm_mail_get_input(_ctx); } @@ -137,6 +149,7 @@ DOVEADM_CMD_MAIL_COMMON DOVEADM_CMD_PARAM('m', "mailbox", CMD_PARAM_STR, 0) DOVEADM_CMD_PARAM('U', "uid", CMD_PARAM_INT64, CMD_PARAM_FLAG_UNSIGNED) DOVEADM_CMD_PARAM('g', "guid", CMD_PARAM_STR, 0) +DOVEADM_CMD_PARAM('r', "received-date", CMD_PARAM_STR, 0) DOVEADM_CMD_PARAM('\0', "file", CMD_PARAM_ISTREAM, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END };