summaryrefslogtreecommitdiffstats
path: root/vendor/modernc.org/libc/libc.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/modernc.org/libc/libc.go')
-rw-r--r--vendor/modernc.org/libc/libc.go21
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),