+/*
+
+ Ugly code to retrieve the JVM dll/so file.
+
+*/
+
+#ifdef _WIN32
+/* Win32 version */
+static void *find_jvm_symbol(const char *vmlibpath, const char *sym)
+{
+ HINSTANCE hVM = LoadLibrary(vmlibpath);
+ return hVM ? GetProcAddress(hVM, sym) : NULL;
+}
+
+#define JRE_KEY "SOFTWARE\\JavaSoft\\Java Development Kit"
+
+static char *locate_jvm_lib(char *path, size_t path_len)
+{
+ char version[32];
+ char buf[256];
+ DWORD version_len = sizeof(version);
+ DWORD dwPathLen = path_len;
+ HKEY hKey;
+
+ RegOpenKeyEx(HKEY_LOCAL_MACHINE, JRE_KEY, 0, KEY_QUERY_VALUE, &hKey);
+ RegQueryValueEx(hKey, "CurrentVersion", NULL, NULL, (LPBYTE) version, &version_len);
+ RegCloseKey(hKey);
+
+ _snprintf(buf, sizeof(buf), JRE_KEY "\\%s", version);
+ RegOpenKeyEx(HKEY_LOCAL_MACHINE, buf, 0, KEY_QUERY_VALUE, &hKey);
+ RegQueryValueEx(hKey, "JavaHome", NULL, NULL, (LPBYTE) path, &dwPathLen);
+ RegCloseKey(hKey);
+
+ strncat(path, "\\jre\\bin\\server\\jvm.dll", path_len);
+ return path;
+}
+
+#else
+/* Unix version */
+static void *find_jvm_symbol(const char *vmlibpath, const char *sym)
+{
+ void *libVM = dlopen(vmlibpath, RTLD_LAZY);
+ return libVM ? dlsym(libVM, sym) : NULL;
+}
+
+static char *locate_jvm_lib(char *path, size_t n)
+{
+ return NULL;
+}
+#endif
+