]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added imap_to_datetime_tz() to create IMAP date-time with specified timezone.
authorTimo Sirainen <tss@iki.fi>
Fri, 13 Jun 2008 00:29:24 +0000 (03:29 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 13 Jun 2008 00:29:24 +0000 (03:29 +0300)
--HG--
branch : HEAD

src/lib-imap/imap-date.c
src/lib-imap/imap-date.h

index 2ff72896400658269975471377479940d56335ef..b4d2e4bd619d87c3cd37caa8692c451113c6544e 100644 (file)
@@ -158,14 +158,11 @@ bool imap_parse_datetime(const char *str, time_t *timestamp_r,
        return TRUE;
 }
 
-const char *imap_to_datetime(time_t timestamp)
+static const char *
+imap_to_datetime_tm(const struct tm *tm, int timezone_offset)
 {
        char *buf;
-       struct tm *tm;
-       int timezone_offset, year;
-
-       tm = localtime(&timestamp);
-       timezone_offset = utc_offset(tm, timestamp);
+       int year;
 
        /* @UNSAFE: but faster than t_strdup_printf() call.. */
        buf = t_malloc(27);
@@ -211,3 +208,22 @@ const char *imap_to_datetime(time_t timestamp)
 
        return buf;
 }
+
+const char *imap_to_datetime(time_t timestamp)
+{
+       struct tm *tm;
+       int timezone_offset;
+
+       tm = localtime(&timestamp);
+       timezone_offset = utc_offset(tm, timestamp);
+       return imap_to_datetime_tm(tm, timezone_offset);
+}
+
+const char *imap_to_datetime_tz(time_t timestamp, int timezone_offset)
+{
+       const struct tm *tm;
+       time_t adjusted = timestamp + timezone_offset*60;
+
+       tm = gmtime(&adjusted);
+       return imap_to_datetime_tm(tm, timezone_offset);
+}
index 475bb3814d64cf0452fd104c4be4889b2701ea73..d5055eb32fca452b9bb7365b445c61fee8af6694 100644 (file)
@@ -12,7 +12,9 @@ bool imap_parse_date(const char *str, time_t *timestamp_r);
 bool imap_parse_datetime(const char *str, time_t *timestamp_r,
                         int *timezone_offset_r);
 
-/* Returns given UTC time in local timezone. */
+/* Returns given UTC timestamp as IMAP date-time string in local timezone. */
 const char *imap_to_datetime(time_t timestamp);
+/* Returns given UTC timestamp as IMAP date-time string in given timezone. */
+const char *imap_to_datetime_tz(time_t timestamp, int timezone_offset);
 
 #endif