]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm-save: Add -r received-date parameter
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 11 Apr 2023 08:13:27 +0000 (11:13 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Fri, 14 Apr 2023 15:59:41 +0000 (15:59 +0000)
src/doveadm/doveadm-mail-save.c

index a45778259f2579a786f918fd03a03abfa457247e..8b8990724ca3bd8031eb8d0b844ef80c8d3d141b 100644 (file)
@@ -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
 };