libgo/time: Support Irix 6 location of zoneinfo files.
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 25 Apr 2011 19:42:33 +0000 (19:42 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 25 Apr 2011 19:42:33 +0000 (19:42 +0000)
From-SVN: r172936

libgo/go/time/zoneinfo_unix.go

index 6685da7477b05f0d99754b5780e3083c3960cd68..42659ed606265ef631511f1ba0abdaf31c2f5d1a 100644 (file)
@@ -17,8 +17,6 @@ import (
 
 const (
        headerSize = 4 + 16 + 4*7
-       zoneDir    = "/usr/share/zoneinfo/"
-       zoneDir2   = "/usr/share/lib/zoneinfo/"
 )
 
 // Simple I/O interface to binary blob of data.
@@ -211,16 +209,22 @@ func setupZone() {
        // no $TZ means use the system default /etc/localtime.
        // $TZ="" means use UTC.
        // $TZ="foo" means use /usr/share/zoneinfo/foo.
+       // Many systems use /usr/share/zoneinfo, Solaris 2 has
+       // /usr/share/lib/zoneinfo, IRIX 6 has /usr/lib/locale/TZ.
+       zoneDirs := []string{"/usr/share/zoneinfo/",
+               "/usr/share/lib/zoneinfo/",
+               "/usr/lib/locale/TZ/"}
 
        tz, err := os.Getenverror("TZ")
        switch {
        case err == os.ENOENV:
                zones, _ = readinfofile("/etc/localtime")
        case len(tz) > 0:
-               var ok bool
-               zones, ok = readinfofile(zoneDir + tz)
-               if !ok {
-                       zones, _ = readinfofile(zoneDir2 + tz)
+               for _, zoneDir := range zoneDirs {
+                       var ok bool
+                       if zones, ok = readinfofile(zoneDir + tz); ok {
+                               break
+                       }
                }
        case len(tz) == 0:
                // do nothing: use UTC