X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=libexfat%2Ftime.c;h=31ae5a264dd11e4353dfa829d6eb81e985f96f84;hb=71b8358e354b06ce35bf48a183e7452403d1373c;hp=b264a999a9836f437080ade4c8a5f2043f306e8f;hpb=f77812e8b678b8bf620bfbf33882139997ccda34;p=sven%2Fexfat-utils.git

diff --git a/libexfat/time.c b/libexfat/time.c
index b264a99..31ae5a2 100644
--- a/libexfat/time.c
+++ b/libexfat/time.c
@@ -3,7 +3,7 @@
 	exFAT file system implementation library.
 
 	Free exFAT implementation.
-	Copyright (C) 2010-2014  Andrew Nayenko
+	Copyright (C) 2010-2018  Andrew Nayenko
 
 	This program is free software; you can redistribute it and/or modify
 	it under the terms of the GNU General Public License as published by
@@ -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;
 }