diff options
Diffstat (limited to 'libjava/java/lang/natRuntime.cc')
-rw-r--r-- | libjava/java/lang/natRuntime.cc | 36 |
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) { |