From: Marco Bettini Date: Wed, 7 Sep 2022 13:59:11 +0000 (+0000) Subject: doveadm: Fix timezone handling in doveadm fetch date.sent X-Git-Tag: 2.4.0~3632 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d608dd0c805c5b86bfec458980c12bae76eb3c1e;p=thirdparty%2Fdovecot%2Fcore.git doveadm: Fix timezone handling in doveadm fetch date.sent --- diff --git a/src/doveadm/doveadm-mail-fetch.c b/src/doveadm/doveadm-mail-fetch.c index d0bc875e5d..0374c5e50e 100644 --- a/src/doveadm/doveadm-mail-fetch.c +++ b/src/doveadm/doveadm-mail-fetch.c @@ -359,9 +359,8 @@ static int fetch_date_sent(struct fetch_cmd_context *ctx) return -1; chr = tz < 0 ? '-' : '+'; - if (tz < 0) tz = -tz; - doveadm_print(t_strdup_printf("%s (%c%02u%02u)", unixdate2str(t), - chr, tz/60, tz%60)); + doveadm_print(t_strdup_printf("%s (%c%02u%02u)", + unixdate2tzstr(t, tz), chr, abs(tz) / 60, abs(tz) % 60)); return 0; } diff --git a/src/doveadm/doveadm-util.c b/src/doveadm/doveadm-util.c index c5ec5d18a8..cd7d6fdea6 100644 --- a/src/doveadm/doveadm-util.c +++ b/src/doveadm/doveadm-util.c @@ -83,6 +83,11 @@ const char *unixdate2str(time_t timestamp) return t_strflocaltime("%Y-%m-%d %H:%M:%S", timestamp); } +const char *unixdate2tzstr(time_t timestamp, int tz_mins) +{ + return t_strfgmtime("%Y-%m-%d %H:%M:%S", timestamp + tz_mins * 60); +} + const char *doveadm_plugin_getenv(const char *name) { const char *const *envs; diff --git a/src/doveadm/doveadm-util.h b/src/doveadm/doveadm-util.h index 3bd6a35da0..bfc629f278 100644 --- a/src/doveadm/doveadm-util.h +++ b/src/doveadm/doveadm-util.h @@ -8,6 +8,7 @@ struct connection_settings; extern bool doveadm_verbose, doveadm_debug, doveadm_server; const char *unixdate2str(time_t timestamp); +const char *unixdate2tzstr(time_t timestamp, int tz_mins); const char *doveadm_plugin_getenv(const char *name); int doveadm_connect(const char *path); int doveadm_tcp_connect(const char *target, in_port_t default_port);