summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/libc/9sys/tm2sec.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/src/libc/9sys/tm2sec.c b/sys/src/libc/9sys/tm2sec.c
index 223d3f1d9..20bebd0c8 100644
--- a/sys/src/libc/9sys/tm2sec.c
+++ b/sys/src/libc/9sys/tm2sec.c
@@ -50,7 +50,7 @@ yrsize(int y)
long
tm2sec(Tm *tm)
{
- long secs;
+ long secs, *p;
int i, yday, year, *d2m;
if(strcmp(tm->zone, "GMT") != 0 && timezone.stname[0] == 0)
@@ -95,8 +95,16 @@ tm2sec(Tm *tm)
secs -= timezone.stdiff;
else if(strcmp(tm->zone, timezone.dlname) == 0)
secs -= timezone.dldiff;
- if(secs < 0)
- secs = 0;
+ else if(tm->zone[0] == 0){
+ secs -= timezone.dldiff;
+ for(p = timezone.dlpairs; *p; p += 2)
+ if(secs >= p[0] && secs < p[1])
+ break;
+ if(*p == 0){
+ secs += timezone.dldiff;
+ secs -= timezone.stdiff;
+ }
+ }
return secs;
}