diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-04-02 17:12:47 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-04-02 17:13:23 +0300 |
commit | 734f1b388734becb310f15ca461740cbcb09a67a (patch) | |
tree | a5c4fb48e964538abea10380253c218f78d2b11d /libmailutils/datetime | |
parent | 933bc7a293322f1996c791de7a17bb469b1a79e3 (diff) | |
download | mailutils-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.c | 11 |
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 (<m) - TMSEC (>m); + if (!(ltm.tm_year = gtm.tm_year && ltm.tm_mon == gtm.tm_mon)) + d += 86400; + return d; } |