#include "config.h"
-#if !defined(WITH_STATIC_CLASSPATH)
+#if defined(ENABLE_LTDL) && defined(HAVE_LTDL_H)
# include <ltdl.h>
#endif
/*
* Class: java/lang/Runtime
* Method: loadLibrary
- * Signature: (Ljava/lang/String;)I
+ * Signature: (Ljava/lang/String;Ljava/lang/ClassLoader;)I
*/
-s4 _Jv_java_lang_Runtime_loadLibrary(java_lang_String *libname, java_objectheader *cl)
+#if defined(ENABLE_JNI)
+s4 _Jv_java_lang_Runtime_loadLibrary(JNIEnv *env, java_lang_String *libname, classloader *cl)
+#else
+s4 _Jv_java_lang_Runtime_loadLibrary(java_lang_String *libname, classloader *cl)
+#endif
{
-#if !defined(WITH_STATIC_CLASSPATH)
+#if defined(ENABLE_LTDL)
utf *name;
lt_dlhandle handle;
+# if defined(ENABLE_JNI)
lt_ptr onload;
s4 version;
-#endif
+# endif
if (libname == NULL) {
exceptions_throw_nullpointerexception();
return 0;
}
-#if defined(WITH_STATIC_CLASSPATH)
- return 1;
-#else /* defined(WITH_STATIC_CLASSPATH) */
- name = javastring_toutf(libname, 0);
+ name = javastring_toutf((java_handle_t *) libname, false);
/* is the library already loaded? */
- if (native_hashtable_library_find(name, cl))
+ if (native_library_find(name, cl) != NULL)
return 1;
- /* try to open the library */
+ /* open the library */
- if (!(handle = lt_dlopen(name->text))) {
- if (opt_verbose) {
- log_start();
- log_print("_Jv_java_lang_Runtime_loadLibrary: ");
- log_print(lt_dlerror());
- log_finish();
- }
+ handle = native_library_open(name);
+ if (handle == NULL)
return 0;
- }
+# if defined(ENABLE_JNI)
/* resolve JNI_OnLoad function */
- if ((onload = lt_dlsym(handle, "JNI_OnLoad"))) {
+ onload = lt_dlsym(handle, "JNI_OnLoad");
+
+ if (onload != NULL) {
JNIEXPORT s4 (JNICALL *JNI_OnLoad) (JavaVM *, void *);
JavaVM *vm;
return 0;
}
}
+# endif
/* insert the library name into the library hash */
- native_hashtable_library_add(name, cl, handle);
+ native_library_add(name, cl, handle);
return 1;
-#endif /* defined(WITH_STATIC_CLASSPATH) */
+#else
+ vm_abort("_Jv_java_lang_Runtime_loadLibrary: not available");
+
+ /* keep compiler happy */
+
+ return 0;
+#endif
}