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