| // Copyright 2015 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| //go:build ios | |
| // +build ios | |
| package time | |
| import ( | |
| "runtime" | |
| "syscall" | |
| ) | |
| var zoneSources = []string{ | |
| getZoneRoot() + "/zoneinfo.zip", | |
| } | |
| func getZoneRoot() string { | |
| // The working directory at initialization is the root of the | |
| // app bundle: "/private/.../bundlename.app". That's where we | |
| // keep zoneinfo.zip for tethered iOS builds. | |
| // For self-hosted iOS builds, the zoneinfo.zip is in GOROOT. | |
| roots := []string{runtime.GOROOT() + "/lib/time"} | |
| wd, err := syscall.Getwd() | |
| if err == nil { | |
| roots = append(roots, wd) | |
| } | |
| for _, r := range roots { | |
| var st syscall.Stat_t | |
| fd, err := syscall.Open(r, syscall.O_RDONLY, 0) | |
| if err != nil { | |
| continue | |
| } | |
| defer syscall.Close(fd) | |
| if err := syscall.Fstat(fd, &st); err == nil { | |
| return r | |
| } | |
| } | |
| return "/XXXNOEXIST" | |
| } | |
| func initLocal() { | |
| // TODO(crawshaw): [NSTimeZone localTimeZone] | |
| localLoc = *UTC | |
| } |