OSDN Git Service

Fix for PR libgcj/7416:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Dec 2002 22:50:10 +0000 (22:50 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Dec 2002 22:50:10 +0000 (22:50 +0000)
* 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

libjava/ChangeLog
libjava/java/lang/System.java
libjava/java/security/Security.java
libjava/javax/naming/InitialContext.java

index 2644aee..8f58e13 100644 (file)
@@ -1,4 +1,16 @@
 2002-12-31  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>
             Ranjit Mathew  <rmathew@hotmail.com>
 
        Fix for PR libgcj/8997:
index edc818f..ab58425 100644 (file)
@@ -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':
    * <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 bf7a993..39d75ee 100644 (file)
@@ -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);
 
index 99ae426..705e24a 100644 (file)
@@ -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);
        }