summaryrefslogtreecommitdiff
path: root/libmailutils/datetime
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2013-04-02 17:12:47 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2013-04-02 17:13:23 +0300
commit734f1b388734becb310f15ca461740cbcb09a67a (patch)
treea5c4fb48e964538abea10380253c218f78d2b11d /libmailutils/datetime
parent933bc7a293322f1996c791de7a17bb469b1a79e3 (diff)
downloadmailutils-734f1b388734becb310f15ca461740cbcb09a67a.tar.gz
mailutils-734f1b388734becb310f15ca461740cbcb09a67a.tar.bz2
Rewrite mu_utc_offset in a more portable (hopefully) way.
Diffstat (limited to 'libmailutils/datetime')
-rw-r--r--libmailutils/datetime/utcoff.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libmailutils/datetime/utcoff.c b/libmailutils/datetime/utcoff.c
index d23fa7124..ce31cd2d0 100644
--- a/libmailutils/datetime/utcoff.c
+++ b/libmailutils/datetime/utcoff.c
@@ -20,10 +20,17 @@
#endif
#include <time.h>
+#define TMSEC(t) (((t)->tm_hour * 60 + (t)->tm_min) * 60 + (t)->tm_sec)
+
/* Returns the offset of our timezone from UTC, in seconds. */
int
mu_utc_offset (void)
{
- tzset ();
- return - timezone;
+ time_t t = time (NULL);
+ struct tm ltm = *localtime (&t);
+ struct tm gtm = *gmtime (&t);
+ int d = TMSEC (&ltm) - TMSEC (&gtm);
+ if (!(ltm.tm_year = gtm.tm_year && ltm.tm_mon == gtm.tm_mon))
+ d += 86400;
+ return d;
}

Return to:

Send suggestions and report system problems to the System administrator.