]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Fix timezone handling in doveadm fetch date.sent
authorMarco Bettini <marco.bettini@open-xchange.com>
Wed, 7 Sep 2022 13:59:11 +0000 (13:59 +0000)
committerMarco Bettini <marco.bettini@open-xchange.com>
Fri, 16 Sep 2022 11:17:40 +0000 (11:17 +0000)
src/doveadm/doveadm-mail-fetch.c
src/doveadm/doveadm-util.c
src/doveadm/doveadm-util.h

index d0bc875e5d57763bfc561bda628614fb4c7ffbee..0374c5e50ea58717505ba6de9a44d0cf823631ce 100644 (file)
@@ -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;
 }
 
index c5ec5d18a8818c6b662eaf18fa53e7aab14d73ce..cd7d6fdea6a82bf66a7115e24e43e354cd0b52a8 100644 (file)
@@ -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;
index 3bd6a35da0bd72dc50d328472007614fe63effcb..bfc629f27859f5cb02a2faf7581ffdac5d56723a 100644 (file)
@@ -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);