aboutsummaryrefslogtreecommitdiff
path: root/libjava/prims.cc
diff options
context:
space:
mode:
authorAnthony Green <green@gcc.gnu.org>2000-08-21 06:05:20 +0000
committerAnthony Green <green@gcc.gnu.org>2000-08-21 06:05:20 +0000
commit1a558147d192b81f718a55056d2467221dfeb5de (patch)
treef43cbb5fc8ea1cd44134f23db03b2228cc3604df /libjava/prims.cc
parentb485e15bf861b6eb5680c3a268036b2cdeacd656 (diff)
downloadgcc-1a558147d192b81f718a55056d2467221dfeb5de.zip
gcc-1a558147d192b81f718a55056d2467221dfeb5de.tar.gz
gcc-1a558147d192b81f718a55056d2467221dfeb5de.tar.bz2
natSystem.cc (init_properties): Change sourceware reference to sources.redhat.com.
Sun Aug 20 21:02:48 2000 Anthony Green <green@redhat.com> * java/lang/natSystem.cc (init_properties): Change sourceware reference to sources.redhat.com. * include/java-props.h: Add _Jv_Jar_Class_Path. * prims.cc: Ditto. Set it from `gij -jar file' option. * java/lang/natSystem.cc (init_properties): Set java.class.path from {gij -jar file}:{CLASSPATH variable}:{-Djava.class.path= or .} * java/util/PropertyPermission.java: Import from GNU Classpath. * Makefile.in: Rebuilt. * Makefile.am: Add java/util/PropertyPermission.java. * java/lang/System.java: Add setProperty method. * gij.cc (main): Add -jar option to execute jar files. (help): Describe -jar option. * prims.cc (_Jv_RunMain): Add support for jar execution mode. * gnu/gcj/tools/Gij.java: New file. * include/jvm.h: Add is_jar argument to _Jv_RunMain. * gnu/gcj/runtime/FirstThread.java (main): New method. * java/util/jar/Attributes.java: Correct comment spelling. From-SVN: r35829
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r--libjava/prims.cc33
1 files changed, 28 insertions, 5 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc
index 817b0a8..38714b3 100644
--- a/libjava/prims.cc
+++ b/libjava/prims.cc
@@ -79,6 +79,9 @@ static java::lang::OutOfMemoryError *no_memory;
// Properties set at compile time.
const char **_Jv_Compiler_Properties;
+// The JAR file to add to the beginning of java.class.path.
+const char *_Jv_Jar_Class_Path;
+
#ifndef DISABLE_GETENV_PROPERTIES
// Property key/value pairs.
property_pair *_Jv_Environment_Properties;
@@ -888,8 +891,9 @@ JvRunMain (jclass klass, int argc, const char **argv)
}
void
-_Jv_RunMain (const char *class_name, int argc, const char **argv)
+_Jv_RunMain (const char *name, int argc, const char **argv, bool is_jar)
{
+ jstring class_name;
PROCESS_GCJ_PROPERTIES;
main_init ();
@@ -900,12 +904,31 @@ _Jv_RunMain (const char *class_name, int argc, const char **argv)
_Jv_ThisExecutable (exec_name);
#endif
+ if (is_jar)
+ {
+ _Jv_Jar_Class_Path = strdup (name);
+ arg_vec = JvConvertArgv (1, &_Jv_Jar_Class_Path);
+
+ main_thread =
+ new gnu::gcj::runtime::FirstThread (&_CL_Q43gnu3gcj7runtime11FirstThread,
+ arg_vec);
+ main_thread->start();
+ _Jv_ThreadWait ();
+
+ class_name = gnu::gcj::runtime::FirstThread::jarMainClassName;
+ }
+ else
+ class_name = JvNewStringLatin1 (name);
+
arg_vec = JvConvertArgv (argc - 1, argv + 1);
- main_thread = new gnu::gcj::runtime::FirstThread (JvNewStringLatin1 (class_name),
- arg_vec);
- main_thread->start();
- _Jv_ThreadWait ();
+ if (class_name)
+ {
+ main_thread = new gnu::gcj::runtime::FirstThread (class_name, arg_vec);
+ main_thread->start();
+ _Jv_ThreadWait ();
+ }
+
java::lang::Runtime::getRuntime ()->exit (0);
}