summaryrefslogtreecommitdiffstats
path: root/libjava/java/lang
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang')
-rw-r--r--libjava/java/lang/System.java9
-rw-r--r--libjava/java/lang/natSystem.cc41
2 files changed, 40 insertions, 10 deletions
diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java
index b94c259195b..52dbe75988e 100644
--- a/libjava/java/lang/System.java
+++ b/libjava/java/lang/System.java
@@ -19,6 +19,7 @@ import java.io.PrintStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.util.Properties;
+import java.util.PropertyPermission;
/**
* @author Tom Tromey <tromey@cygnus.com>
@@ -132,8 +133,12 @@ public final class System
properties = props;
}
- // TODO 1.2.
- // public static String setProperty (String key, String value);
+ public static String setProperty (String key, String value)
+ {
+ if (secman != null)
+ secman.checkPermission (new PropertyPermission (key, "write"));
+ return (String) properties.setProperty (key, value);
+ }
// TODO 1.2.
// public static String mapLibraryName (String libname);
diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc
index 2d82c896a07..81f7860dad0 100644
--- a/libjava/java/lang/natSystem.cc
+++ b/libjava/java/lang/natSystem.cc
@@ -32,6 +32,7 @@ details. */
#include <java/lang/ArrayStoreException.h>
#include <java/lang/ArrayIndexOutOfBoundsException.h>
#include <java/lang/NullPointerException.h>
+#include <java/lang/StringBuffer.h>
#include <java/util/Properties.h>
#include <java/io/PrintStream.h>
#include <java/io/InputStream.h>
@@ -216,7 +217,7 @@ java::lang::System::init_properties (void)
// (introduced in 1.2), and earlier versioning properties.
SET ("java.version", VERSION);
SET ("java.vendor", "Free Software Foundation");
- SET ("java.vendor.url", "http://sourceware.cygnus.com/java/");
+ SET ("java.vendor.url", "http://sources.redhat.com/java/");
SET ("java.class.version", GCJVERSION);
SET ("java.vm.specification.version", "1.1");
SET ("java.vm.specification.name", "Java(tm) Virtual Machine Specification");
@@ -263,13 +264,6 @@ java::lang::System::init_properties (void)
}
#endif /* HAVE_UNAME */
- char *classpath = ::getenv("CLASSPATH");
- // FIXME: find libgcj.zip and append its path?
- if (classpath != NULL)
- SET ("java.class.path", classpath);
- else
- SET ("java.class.path", ".");
-
#ifndef NO_GETUID
#ifdef HAVE_PWD_H
uid_t user_id = getuid ();
@@ -353,4 +347,35 @@ java::lang::System::init_properties (void)
i++;
}
}
+
+ // FIXME: find libgcj.zip and append its path?
+ char *classpath = ::getenv("CLASSPATH");
+ jstring cp = properties->getProperty (JvNewStringLatin1("java.class.path"));
+ java::lang::StringBuffer *sb = new java::lang::StringBuffer ();
+
+ if (_Jv_Jar_Class_Path)
+ {
+ sb->append (JvNewStringLatin1 (_Jv_Jar_Class_Path));
+#ifdef WIN32
+ sb->append ((jchar) ';');
+#else
+ sb->append ((jchar) ':');
+#endif;
+ }
+ if (classpath)
+ {
+ sb->append (JvNewStringLatin1 (classpath));
+#ifdef WIN32
+ sb->append ((jchar) ';');
+#else
+ sb->append ((jchar) ':');
+#endif;
+ }
+ if (cp != NULL)
+ sb->append (cp);
+ else
+ sb->append ((jchar) '.');
+
+ properties->put(JvNewStringLatin1 ("java.class.path"),
+ sb->toString ());
}
OpenPOWER on IntegriCloud