From 556af124d41251d46f9179552d5edc1b2bb7b6b7 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Tue, 4 Aug 2015 14:47:52 +0000 Subject: [PATCH] Atualizando java --- po/pt_BR.po | 2 +- src/java/Makefile.in | 2 +- src/java/call.cc | 3 +++ src/java/plugin.cc | 1 - src/java/startstop.cc | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------- 5 files changed, 64 insertions(+), 30 deletions(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index 1c28bfe..3aad29b 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: pw3270 5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-07-07 08:13-0300\n" +"POT-Creation-Date: 2015-07-07 09:37-0300\n" "PO-Revision-Date: 2014-02-17 08:05-0300\n" "Last-Translator: Perry Werneck \n" "Language-Team: Portugues <>\n" diff --git a/src/java/Makefile.in b/src/java/Makefile.in index 3a276c4..5ce17c1 100644 --- a/src/java/Makefile.in +++ b/src/java/Makefile.in @@ -174,7 +174,7 @@ jni3270-@host_cpu@.zip: \ @rm -fr ui @mkdir ui - @cp ../../ui/*java.xml ui + @cp ../../ui/*java*.xml ui @zip -9 -m -r $@ ui @rm -fr ui diff --git a/src/java/call.cc b/src/java/call.cc index 454ccc3..debb49b 100644 --- a/src/java/call.cc +++ b/src/java/call.cc @@ -31,6 +31,7 @@ #include "private.h" #include #include + #include /*---[ Implement ]----------------------------------------------------------------------------------*/ @@ -40,6 +41,8 @@ namespace PW3270_NAMESPACE { void java::call(GtkWidget *widget, const char *classname) { + debug("%s(%s)",__FUNCTION__,classname); + if(!trylock()) { failed(widget, _( "Can't access java virtual machine" ), "%s", strerror(EBUSY)); diff --git a/src/java/plugin.cc b/src/java/plugin.cc index cf60320..ab69db9 100644 --- a/src/java/plugin.cc +++ b/src/java/plugin.cc @@ -370,7 +370,6 @@ using namespace PW3270_NAMESPACE; extern "C" { static PW3270_NAMESPACE::session * factory(const char *name) { - debug("---> %s",__FUNCTION__); return new plugin(lib3270_get_default_session_handle()); } diff --git a/src/java/startstop.cc b/src/java/startstop.cc index ff4cb94..4891147 100644 --- a/src/java/startstop.cc +++ b/src/java/startstop.cc @@ -212,60 +212,92 @@ extern "C" { kernel = LoadLibrary("kernel32.dll"); - AddDllDirectory = (HANDLE WINAPI (*)(PCWSTR)) GetProcAddress(kernel,"AddDllDirectory"); - if(AddDllDirectory) { + if(kernel) { - // Acrescenta mais caminhos para achar a dll - for(size_t f = 0; f < G_N_ELEMENTS(dlldir); f++) { + AddDllDirectory = (HANDLE WINAPI (*)(PCWSTR)) GetProcAddress(kernel,"AddDllDirectory"); + if(AddDllDirectory) { - const char *env = getenv(dlldir[f].env); + // Acrescenta mais caminhos para achar a dll + for(size_t f = 0; f < G_N_ELEMENTS(dlldir); f++) { - debug("%s=\"%s\"",dlldir[f].env,env); + const char *env = getenv(dlldir[f].env); - if(env) { + debug("%s=\"%s\"",dlldir[f].env,env); - gchar *p = g_build_filename(env,dlldir[f].path,NULL); + if(env) { - debug("Adicionando diretório \"%s\"",p); + gchar *p = g_build_filename(env,dlldir[f].path,NULL); - wchar_t *path = (wchar_t *) malloc(4096*sizeof(wchar_t)); - mbstowcs(path, p, 4095); - dlldir[f].cookie = AddDllDirectory(path); - free(path); + lib3270_trace_event(v3270_get_session(widget),"Adding \"%s\" to DLL search path",p); - g_free(p); + wchar_t *path = (wchar_t *) malloc(4096*sizeof(wchar_t)); + mbstowcs(path, p, 4095); + dlldir[f].cookie = AddDllDirectory(path); + free(path); + g_free(p); + + } } + + } else { + + lib3270_trace_event(v3270_get_session(widget),"Can't find %s: %s","AddDllDirectory",session::win32_strerror(GetLastError()).c_str()); + } + } else { + + lib3270_trace_event(v3270_get_session(widget),"Can't load %s: %s\n","kernel32.dll",session::win32_strerror(GetLastError()).c_str()); + } - #ifdef DEBUG - else { - debug("Can't get %s: %s","AddDllDirectory",session::win32_strerror(GetLastError()).c_str()) - } - #endif // DEBUG hModule = LoadLibrary("jvm.dll"); + if(!hModule) { + lib3270_trace_event(v3270_get_session(widget),"Can't load %s\n","jvm.dll",session::win32_strerror(GetLastError()).c_str()); + + for(size_t f = 0; !hModule && f < G_N_ELEMENTS(dlldir); f++) { + + const char *env = getenv(dlldir[f].env); + + debug("%s=\"%s\"",dlldir[f].env,env); + + if(env) { + + gchar *p = g_build_filename(env,dlldir[f].path,"jvm.dll",NULL); + hModule = LoadLibrary(p); + if(!hModule) { + lib3270_trace_event(v3270_get_session(widget),"Can't load %s: %s\n",p,session::win32_strerror(GetLastError()).c_str()); + } + g_free(p); + + } + } + } - if(hModule) { + if(!hModule) { failed(widget, _( "Can't load java virtual machine" ), "%s", session::win32_strerror(GetLastError()).c_str()); } - RemoveDllDirectory = (BOOL WINAPI (*)(HANDLE)) GetProcAddress(kernel,"RemoveDllDirectory"); - if(RemoveDllDirectory) { + if(kernel) { - for(size_t f = 0; f < G_N_ELEMENTS(dlldir); f++) { + RemoveDllDirectory = (BOOL WINAPI (*)(HANDLE)) GetProcAddress(kernel,"RemoveDllDirectory"); + if(RemoveDllDirectory) { - if(dlldir[f].cookie) { + for(size_t f = 0; f < G_N_ELEMENTS(dlldir); f++) { - RemoveDllDirectory(dlldir[f].cookie); + if(dlldir[f].cookie) { + RemoveDllDirectory(dlldir[f].cookie); + + } } + } - } + FreeLibrary(kernel); - FreeLibrary(kernel); + } if(!hModule) { return false; -- libgit2 0.21.2