aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natRuntime.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/natRuntime.cc')
-rw-r--r--libjava/java/lang/natRuntime.cc36
1 files changed, 33 insertions, 3 deletions
diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc
index ec1d402..e0ec95f 100644
--- a/libjava/java/lang/natRuntime.cc
+++ b/libjava/java/lang/natRuntime.cc
@@ -1,6 +1,6 @@
// natRuntime.cc - Implementation of native side of Runtime class.
-/* Copyright (C) 1998, 1999 Cygnus Solutions
+/* Copyright (C) 1998, 1999, 2000 Cygnus Solutions
This file is part of libgcj.
@@ -20,6 +20,10 @@ details. */
#ifdef USE_LTDL
#include <ltdl.h>
+
+/* FIXME: we don't always need this. The next libtool will let us use
+ AC_LTDL_PREOPEN to see if we do. */
+const lt_dlsymlist lt_preloaded_symbols[1] = { { 0, 0 } };
#endif
void
@@ -56,8 +60,12 @@ java::lang::Runtime::load (jstring path)
checkLink (path);
using namespace java::lang;
#ifdef USE_LTDL
+ jint len = _Jv_GetStringUTFLength (path);
+ char buf[len + 1];
+ jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf);
+ buf[total] = '\0';
// FIXME: make sure path is absolute.
- lt_dlhandle h = lt_dlopen (FIXME);
+ lt_dlhandle h = lt_dlopen (buf);
if (h == NULL)
{
const char *msg = lt_dlerror ();
@@ -76,8 +84,12 @@ java::lang::Runtime::loadLibrary (jstring lib)
checkLink (lib);
using namespace java::lang;
#ifdef USE_LTDL
+ jint len = _Jv_GetStringUTFLength (lib);
+ char buf[len + 1];
+ jsize total = JvGetStringUTFRegion (lib, 0, lib->length(), buf);
+ buf[total] = '\0';
// FIXME: make sure path is absolute.
- lt_dlhandle h = lt_dlopenext (FIXME);
+ lt_dlhandle h = lt_dlopenext (buf);
if (h == NULL)
{
const char *msg = lt_dlerror ();
@@ -89,6 +101,24 @@ java::lang::Runtime::loadLibrary (jstring lib)
#endif /* USE_LTDL */
}
+jboolean
+java::lang::Runtime::loadLibraryInternal (jstring lib)
+{
+ JvSynchronize sync (this);
+ using namespace java::lang;
+#ifdef USE_LTDL
+ jint len = _Jv_GetStringUTFLength (lib);
+ char buf[len + 1];
+ jsize total = JvGetStringUTFRegion (lib, 0, lib->length(), buf);
+ buf[total] = '\0';
+ // FIXME: make sure path is absolute.
+ lt_dlhandle h = lt_dlopenext (buf);
+ return h != NULL;
+#else
+ return false;
+#endif /* USE_LTDL */
+}
+
void
java::lang::Runtime::init (void)
{