summaryrefslogtreecommitdiff
path: root/src/libjvm-java.c
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2018-02-19 15:51:56 +0200
committerJari Vetoniemi <mailroxas@gmail.com>2018-02-19 15:51:56 +0200
commitda200d3ac0204abadd5992820486321970d689b8 (patch)
tree31b559749ff7487a420cd7f1b1b7a67aa0a9d021 /src/libjvm-java.c
parent09fc4ea761b6b774a6423bdfd92049be78e32a49 (diff)
refactoring, fixing and implementing
messy commits yay
Diffstat (limited to 'src/libjvm-java.c')
-rw-r--r--src/libjvm-java.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libjvm-java.c b/src/libjvm-java.c
index 25e93c0..ed2b6ce 100644
--- a/src/libjvm-java.c
+++ b/src/libjvm-java.c
@@ -1,8 +1,23 @@
+#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
+#include <stdbool.h>
#include <assert.h>
+#include <err.h>
+#include <dlfcn.h>
#include "jvm/jni.h"
+void
+java_lang_System_load(JNIEnv *env, jobject object, va_list args)
+{
+ assert(env && object);
+ const char *lib = (*env)->GetStringUTFChars(env, va_arg(args, jstring), NULL);
+ va_end(args);
+ printf("%s\n", lib);
+ // FIXME: should handle loading properly
+ // bionic_dlopen(lib, RTLD_NOW | RTLD_GLOBAL);
+}
+
jclass
java_lang_Object_getClass(JNIEnv *env, jobject object, va_list args)
{
@@ -22,6 +37,8 @@ jobject
java_lang_ClassLoader_findLibrary(JNIEnv *env, jobject object, va_list args)
{
assert(env && object);
+ // XXX: according to docs should return absolute path, but relative is more convenient for us.
+ // fix if breaks anything because of this.
char lib[255];
snprintf(lib, sizeof(lib), "lib%s.so", (*env)->GetStringUTFChars(env, va_arg(args, jstring), NULL));
va_end(args);
@@ -44,3 +61,10 @@ java_util_Set_iterator(JNIEnv *env, jobject object, va_list args)
static jobject sv;
return (sv ? sv : (sv = (*env)->AllocObject(env, (*env)->FindClass(env, "java/util/Iterator"))));
}
+
+jboolean
+java_util_Iterator_hasNext(JNIEnv *env, jobject object, va_list args)
+{
+ assert(env && object);
+ return false;
+}