Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > 193665cc3e55a06f990e31ec956aee6b > files > 107

java-1.7.0-icedtea-devel-1.7.0.0-24.614.2mdv2008.1.x86_64.rpm

diff -urN openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp	2007-10-12 18:25:55.000000000 -0400
+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2007-10-12 18:26:02.000000000 -0400
@@ -387,6 +387,10 @@
 			       "javax.net.ssl.trustStorePassword",
 			       "");
 
+  // Use the system zoneinfo files, if present
+  Arguments::PropertyList_add (&sp,
+			       "user.zoneinfo.dir", "/usr/share/javazi");
+
 #undef malloc
 #undef getenv
 #undef EXTENSIONS_DIR
--- ../openjdkb23/openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java	2007-10-30 04:38:28.000000000 -0400
+++ openjdk/jdk/src/share/classes/sun/util/calendar/ZoneInfoFile.java	2007-11-13 13:16:52.000000000 -0500
@@ -28,6 +28,7 @@
 import  java.io.File;
 import  java.io.FileInputStream;
 import  java.io.FileNotFoundException;
+import java.security.AccessControlException;
 import  java.io.IOException;
 import  java.lang.ref.SoftReference;
 import  java.security.AccessController;
@@ -1021,11 +1022,29 @@
         byte[] buffer = null;
 
         try {
-            String homeDir = AccessController.doPrivileged(
-                new sun.security.action.GetPropertyAction("java.home"));
-            final String fname = homeDir + File.separator + "lib" + File.separator
-                                 + "zi" + File.separator + fileName;
-            buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() {
+          String zi_dir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("user.zoneinfo.dir"));
+           File dir = null;
+           if (zi_dir != null)
+             dir = new File(zi_dir);
+
+           // Some minimal sanity checking
+           if (dir != null) {
+             try {
+               File f = new File(dir, "ZoneInfoMappings");
+               if (!f.exists())
+                 dir = null;
+             } catch (AccessControlException ace) {
+               dir = null;
+             }
+           }
+
+           if (dir == null) {
+             String homeDir = (String) AccessController.doPrivileged(new sun.security.action.GetPropertyAction("java.home"));
+             zi_dir = homeDir + File.separator + "lib" + File.separator
+               + "zi";
+           }
+           final String fname =  zi_dir + File.separator + fileName;
+		buffer = (byte[]) AccessController.doPrivileged(new PrivilegedExceptionAction() {
                 public Object run() throws IOException {
                     File file = new File(fname);
                     if (!file.canRead()) {