diff options
Diffstat (limited to 'vendor/modernc.org/libc/libc.go')
-rw-r--r-- | vendor/modernc.org/libc/libc.go | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/vendor/modernc.org/libc/libc.go b/vendor/modernc.org/libc/libc.go index e1c00b0f..01d6793a 100644 --- a/vendor/modernc.org/libc/libc.go +++ b/vendor/modernc.org/libc/libc.go @@ -970,13 +970,24 @@ func Xatol(t *TLS, nptr uintptr) long { } } -// time_t mktime(struct tm *tm); -func Xmktime(t *TLS, ptm uintptr) time.Time_t { - loc := gotime.Local +func getLocalLocation() (loc *gotime.Location) { + loc = gotime.Local if r := getenv(Environ(), "TZ"); r != 0 { - zone, off := parseZone(GoString(r)) - loc = gotime.FixedZone(zone, off) + zname := GoString(r) + zone, off := parseZone(zname) + loc = gotime.FixedZone(zone, -off) + loc2, _ := gotime.LoadLocation(zname) + if loc2 != nil { + loc = loc2 + } } + return loc + +} + +// time_t mktime(struct tm *tm); +func Xmktime(t *TLS, ptm uintptr) time.Time_t { + loc := getLocalLocation() tt := gotime.Date( int((*time.Tm)(unsafe.Pointer(ptm)).Ftm_year+1900), gotime.Month((*time.Tm)(unsafe.Pointer(ptm)).Ftm_mon+1), |