Patch: FYI: PR 7416
Tom Tromey
tromey@redhat.com
Tue Dec 31 14:38:00 GMT 2002
I'm checking this in to the trunk and the branch.
This fixes PR 7416. Now some config files are found relative to a
base URL; this URL uses the "short" name of the VM.
Tested on x86 Red Hat Linux 7.3.
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
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 <tromey@redhat.com>
Index: java/lang/System.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/lang/System.java,v
retrieving revision 1.10
diff -u -r1.10 System.java
--- java/lang/System.java 13 May 2002 20:10:35 -0000 1.10
+++ java/lang/System.java 31 Dec 2002 22:36:22 -0000
@@ -73,15 +73,32 @@
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 @@
* 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 @@
* 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 @@
* 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 @@
* In addition, gnu defines several other properties, where ? stands for
* each character in '0' through '9':
* <dl>
+ * <dl> gnu.classpath.vm.shortname <dd> Succinct version of the VM name;
+ * used for finding property files in file system
+ * <dl> gnu.classpath.home.url <dd> Base URL; used for finding
+ * property files in file system
* <dt> gnu.cpu.endian <dd>big or little
* <dt> gnu.java.io.encoding_scheme_alias.ISO-8859-? <dd>8859_?
* <dt> gnu.java.io.encoding_scheme_alias.iso-8859-? <dd>8859_?
Index: java/security/Security.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/security/Security.java,v
retrieving revision 1.10
diff -u -r1.10 Security.java
--- java/security/Security.java 13 Dec 2002 14:21:07 -0000 1.10
+++ java/security/Security.java 31 Dec 2002 22:36:22 -0000
@@ -37,9 +37,10 @@
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 @@
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 @@
{
}
- 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);
Index: javax/naming/InitialContext.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/javax/naming/InitialContext.java,v
retrieving revision 1.6
diff -u -r1.6 InitialContext.java
--- javax/naming/InitialContext.java 23 Nov 2002 21:50:39 -0000 1.6
+++ javax/naming/InitialContext.java 31 Dec 2002 22:36:23 -0000
@@ -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 @@
}
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);
}
More information about the Java-patches
mailing list