From: tromey Date: Tue, 31 Dec 2002 22:50:10 +0000 (+0000) Subject: Fix for PR libgcj/7416: X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=227dc974a6cc8c353ea67482e33c46f172266a6a;p=pf3gnuchains%2Fgcc-fork.git Fix for PR libgcj/7416: * javax/naming/InitialContext.java (init): Use gnu.classpath.home.url. * java/security/Security.java: Use new properties. (loadProviders): Accept base url; use it. * java/lang/System.java: Document gnu.classpath.vm.shortname, and gnu.classpath.home.url. (gnu.classpath.home.url): Define. (gnu.classpath.vm.shortname): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60722 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 2644aeedc51..8f58e13f938 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,4 +1,16 @@ 2002-12-31 Tom Tromey + + Fix for PR libgcj/7416: + * javax/naming/InitialContext.java (init): Use + gnu.classpath.home.url. + * java/security/Security.java: Use new properties. + (loadProviders): Accept base url; use it. + * java/lang/System.java: Document gnu.classpath.vm.shortname, and + gnu.classpath.home.url. + (gnu.classpath.home.url): Define. + (gnu.classpath.vm.shortname): Likewise. + +2002-12-31 Tom Tromey Ranjit Mathew Fix for PR libgcj/8997: diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java index edc818fb181..ab584250749 100644 --- a/libjava/java/lang/System.java +++ b/libjava/java/lang/System.java @@ -73,15 +73,32 @@ public final class System loadLibrary("javalang"); Properties defaultProperties = Runtime.defaultProperties; - defaultProperties.put("gnu.cpu.endian", - isWordsBigEndian() ? "big" : "little"); + // Set base URL if not already set. + if (defaultProperties.get("gnu.classpath.home.url") == null) + defaultProperties.put("gnu.classpath.home.url", + "file://" + + defaultProperties.get("gnu.classpath.home") + + "/lib"); + + // Set short name if not already set. + if (defaultProperties.get("gnu.classpath.vm.shortname") == null) + { + String value = defaultProperties.getProperty("java.vm.name"); + int index = value.lastIndexOf(' '); + if (index != -1) + value = value.substring(index + 1); + defaultProperties.put("gnu.classpath.vm.shortname", value); + } + + defaultProperties.put("gnu.cpu.endian", + isWordsBigEndian() ? "big" : "little"); // XXX FIXME - Temp hack for old systems that set the wrong property if (defaultProperties.get("java.io.tmpdir") == null) defaultProperties.put("java.io.tmpdir", defaultProperties.get("java.tmpdir")); } - + /** * Stores the current system properties. This can be modified by * {@link #setProperties(Properties)}, but will never be null, because @@ -101,7 +118,7 @@ public final class System * however. */ public static final InputStream in - = new BufferedInputStream (new FileInputStream(FileDescriptor.in)); + = new BufferedInputStream(new FileInputStream(FileDescriptor.in)); /** * The standard output PrintStream. This is assigned at startup and * starts its life perfectly valid. Although it is marked final, you can @@ -113,7 +130,7 @@ public final class System * you, however. */ public static final PrintStream out - = new PrintStream(new BufferedOutputStream (new FileOutputStream(FileDescriptor.out)), true); + = new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)), true); /** * The standard output PrintStream. This is assigned at startup and * starts its life perfectly valid. Although it is marked final, you can @@ -125,7 +142,7 @@ public final class System * you, however. */ public static final PrintStream err - = new PrintStream(new BufferedOutputStream (new FileOutputStream(FileDescriptor.err)), true); + = new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.err)), true); /** * This class is uninstantiable. @@ -312,6 +329,10 @@ public final class System * In addition, gnu defines several other properties, where ? stands for * each character in '0' through '9': *
+ *
gnu.classpath.vm.shortname
Succinct version of the VM name; + * used for finding property files in file system + *
gnu.classpath.home.url
Base URL; used for finding + * property files in file system *
gnu.cpu.endian
big or little *
gnu.java.io.encoding_scheme_alias.ISO-8859-?
8859_? *
gnu.java.io.encoding_scheme_alias.iso-8859-?
8859_? diff --git a/libjava/java/security/Security.java b/libjava/java/security/Security.java index bf7a993ad47..39d75eef00c 100644 --- a/libjava/java/security/Security.java +++ b/libjava/java/security/Security.java @@ -37,9 +37,10 @@ exception statement from your version. */ package java.security; import java.io.File; -import java.io.FileInputStream; +import java.io.InputStream; import java.io.IOException; import java.io.FileNotFoundException; +import java.net.URL; import java.security.Provider; import java.util.Vector; import java.util.Enumeration; @@ -59,9 +60,9 @@ public final class Security extends Object static { - loadProviders(System.getProperty("java.home"), - System.getProperty("java.vm.name")); - loadProviders(System.getProperty("gnu.classpath.home"), "classpath"); + String base = System.getProperty("gnu.classpath.home.url"); + loadProviders(base, System.getProperty("gnu.classpath.vm.shortname")); + loadProviders(base, "classpath"); } // This class can't be instantiated. @@ -69,20 +70,16 @@ public final class Security extends Object { } - private static void loadProviders(String dir, String vendor) + private static void loadProviders(String baseUrl, String vendor) { - if (dir == null || vendor == null) + if (baseUrl == null || vendor == null) return; - String separator = System.getProperty("file.separator"); - String secfilestr = (dir + - separator + "lib" + - separator + "security" + - separator + vendor + ".security"); + String secfilestr = baseUrl + "/security/" + vendor + ".security"; try { - FileInputStream fin = new FileInputStream(secfilestr); + InputStream fin = new URL(secfilestr).openStream(); secprops = new Properties(); secprops.load(fin); diff --git a/libjava/javax/naming/InitialContext.java b/libjava/javax/naming/InitialContext.java index 99ae426e9ab..705e24ad1eb 100644 --- a/libjava/javax/naming/InitialContext.java +++ b/libjava/javax/naming/InitialContext.java @@ -1,5 +1,5 @@ /* InitialContext.java -- - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2002 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -126,18 +126,22 @@ public class InitialContext implements Context } catch (IOException e) {} - String home = System.getProperty("java.home"); + String home = System.getProperty("gnu.classpath.home.url"); if (home != null) { - String fileName = home + File.separator - + "lib" + File.separator + "jndi.properties"; + String url = home + "/jndi.properties"; Properties p = new Properties (); - try { - InputStream is = new FileInputStream (fileName); - p.load (is); - is.close (); - } catch (IOException e) {} + try + { + InputStream is = new URL(url).openStream(); + p.load (is); + is.close (); + } + catch (IOException e) + { + // Ignore. + } merge (myProps, p); }