dovecot-1.2: Added imap_to_datetime_tz() to create IMAP date-tim...

dovecot at dovecot.org dovecot at dovecot.org
Fri Jun 13 03:29:50 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/1b1fe3d50079
changeset: 7838:1b1fe3d50079
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jun 13 03:29:24 2008 +0300
description:
Added imap_to_datetime_tz() to create IMAP date-time with specified timezone.

diffstat:

2 files changed, 25 insertions(+), 7 deletions(-)
src/lib-imap/imap-date.c |   28 ++++++++++++++++++++++------
src/lib-imap/imap-date.h |    4 +++-

diffs (58 lines):

diff -r e557042b2c1c -r 1b1fe3d50079 src/lib-imap/imap-date.c
--- a/src/lib-imap/imap-date.c	Thu Jun 12 13:16:08 2008 +0300
+++ b/src/lib-imap/imap-date.c	Fri Jun 13 03:29:24 2008 +0300
@@ -158,14 +158,11 @@ bool imap_parse_datetime(const char *str
 	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 time
 
 	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);
+}
diff -r e557042b2c1c -r 1b1fe3d50079 src/lib-imap/imap-date.h
--- a/src/lib-imap/imap-date.h	Thu Jun 12 13:16:08 2008 +0300
+++ b/src/lib-imap/imap-date.h	Fri Jun 13 03:29:24 2008 +0300
@@ -12,7 +12,9 @@ bool imap_parse_datetime(const char *str
 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


More information about the dovecot-cvs mailing list