aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrelan <relan@users.noreply.github.com>2016-07-04 11:57:02 +0300
committerrelan <relan@users.noreply.github.com>2016-08-06 15:32:48 +0300
commit449b965b88d5f9b85435ba6d742b37177c508404 (patch)
tree610419cdeb423e6d3e67e47635d26767bded7e41
parentb9552ca2f9d746a72063165c7d461f3e58e039a5 (diff)
downloadandroid_external_exfat-449b965b88d5f9b85435ba6d742b37177c508404.tar.gz
android_external_exfat-449b965b88d5f9b85435ba6d742b37177c508404.tar.bz2
android_external_exfat-449b965b88d5f9b85435ba6d742b37177c508404.zip
Respect daylight saving time.
-rw-r--r--libexfat/time.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libexfat/time.c b/libexfat/time.c
index 7d2becd..93c1d67 100644
--- a/libexfat/time.c
+++ b/libexfat/time.c
@@ -151,8 +151,14 @@ void exfat_unix2exfat(time_t unix_time, le16_t* date, le16_t* time,
void exfat_tzset(void)
{
time_t now;
+ struct tm* utc;
tzset();
now = time(NULL);
- exfat_timezone = mktime(gmtime(&now)) - now;
+ utc = gmtime(&now);
+ /* gmtime() always sets tm_isdst to 0 because daylight savings never
+ affect UTC. Setting tm_isdst to -1 makes mktime() to determine whether
+ summer time is in effect. */
+ utc->tm_isdst = -1;
+ exfat_timezone = mktime(utc) - now;
}