github.com/x04/go/src@v0.0.0-20200202162449-3d481ceb3525/time/zoneinfo_ios.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build darwin 6 // +build arm arm64 7 8 package time 9 10 import ( 11 "github.com/x04/go/src/runtime" 12 "github.com/x04/go/src/syscall" 13 ) 14 15 var zoneSources = []string{ 16 getZoneRoot() + "/zoneinfo.zip", 17 } 18 19 func getZoneRoot() string { 20 // The working directory at initialization is the root of the 21 // app bundle: "/private/.../bundlename.app". That's where we 22 // keep zoneinfo.zip for tethered iOS builds. 23 // For self-hosted iOS builds, the zoneinfo.zip is in GOROOT. 24 roots := []string{runtime.GOROOT() + "/lib/time"} 25 wd, err := syscall.Getwd() 26 if err == nil { 27 roots = append(roots, wd) 28 } 29 for _, r := range roots { 30 var st syscall.Stat_t 31 fd, err := syscall.Open(r, syscall.O_RDONLY, 0) 32 if err != nil { 33 continue 34 } 35 defer syscall.Close(fd) 36 if err := syscall.Fstat(fd, &st); err == nil { 37 return r 38 } 39 } 40 return "/XXXNOEXIST" 41 } 42 43 func initLocal() { 44 // TODO(crawshaw): [NSTimeZone localTimeZone] 45 localLoc = *UTC 46 }