]> granicus.if.org Git - icu/commitdiff
ICU-10082 Fix timezone detection on Solaris
authorMichael Ow <mow@svn.icu-project.org>
Wed, 8 May 2013 17:00:30 +0000 (17:00 +0000)
committerMichael Ow <mow@svn.icu-project.org>
Wed, 8 May 2013 17:00:30 +0000 (17:00 +0000)
X-SVN-Rev: 33609

icu4c/source/common/putil.cpp

index 12e5a47bced8c3476aad08f219a5d5298b299306..a6c941b56d3cad035b07d6014ae5a971951354ea 100644 (file)
@@ -681,6 +681,7 @@ extern U_IMPORT char *U_TZNAME[];
 #elif U_PLATFORM == U_PF_SOLARIS
 #define TZDEFAULT       "/etc/localtime"
 #define TZZONEINFO      "/usr/share/lib/zoneinfo/"
+#define TZZONEINFO2     "../usr/share/lib/zoneinfo/"
 #define TZ_ENV_CHECK    "localtime"
 #else
 #define TZDEFAULT       "/etc/localtime"
@@ -1041,6 +1042,17 @@ uprv_tzname(int n)
             {
                 return (gTimeZoneBufferPtr = gTimeZoneBuffer + tzZoneInfoLen);
             }
+#if U_PLATFORM == U_PF_SOLARIS
+            else
+            {
+                tzZoneInfoLen = uprv_strlen(TZZONEINFO2);
+                if (uprv_strncmp(gTimeZoneBuffer, TZZONEINFO2, tzZoneInfoLen) == 0
+                                && isValidOlsonID(gTimeZoneBuffer + tzZoneInfoLen))
+                {
+                    return (gTimeZoneBufferPtr = gTimeZoneBuffer + tzZoneInfoLen);
+                }
+            }
+#endif
         } else {
 #if defined(SEARCH_TZFILE)
             DefaultTZInfo* tzInfo = (DefaultTZInfo*)uprv_malloc(sizeof(DefaultTZInfo));