/* * Class: org_apache_trafodion_jdbc_t2_JdbcDebug * Method: traceOut * Signature: (IILjava/lang/String;)V */ JNIEXPORT void JNICALL Java_org_apache_trafodion_jdbc_t2_JdbcDebug_traceOut(JNIEnv *jenv, jclass jcls, jlong debug_handle, jint debug_level, jstring comment) { #if defined(_DEBUG) const char *commentStr; if (comment) commentStr = jenv->GetStringUTFChars(comment,NULL); else commentStr = NULL; if (DebugActive(debug_level,NULL,0)) DebugOutput(commentStr , NULL, 0); if (commentStr) jenv->ReleaseStringUTFChars(comment,commentStr); #endif /* _DEBUG */ }
static void LoadRealLibrary(void) { static const char GetClassObject[] = "DllGetClassObject"; static const char CanUnloadNow[] = "DllCanUnloadNow"; WCHAR ModuleName[MAX_PATH] = {0}; DWORD Len = 0; HINSTANCE hUseInst = hInst; if (hTortoiseGit) return; if (!WantRealVersion()) { TRACE(_T("LoadRealLibrary() - Bypass\n")); hTortoiseGit = NIL; return; } // if HKCU\Software\TortoiseGit\DebugShell is set, load the dlls from the location of the current process // which is for our debug purposes an instance of usually TortoiseProc. That way we can force the load // of the debug dlls. if (DebugActive()) hUseInst = nullptr; Len = GetModuleFileName(hUseInst, ModuleName, _countof(ModuleName)); if (!Len) { TRACE(_T("LoadRealLibrary() - Fail\n")); hTortoiseGit = NIL; return; } // truncate the string at the last '\' char while(Len > 0) { --Len; if (ModuleName[Len] == '\\') { ModuleName[Len] = '\0'; break; } } if (Len == 0) { TRACE(_T("LoadRealLibrary() - Fail\n")); hTortoiseGit = NIL; return; } #ifdef _WIN64 lstrcat(ModuleName, _T("\\TortoiseGit.dll")); #else lstrcat(ModuleName, _T("\\TortoiseGit32.dll")); #endif TRACE(_T("LoadRealLibrary() - Load %s\n"), ModuleName); hTortoiseGit = LoadLibraryEx(ModuleName, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH); if (!hTortoiseGit) { TRACE(_T("LoadRealLibrary() - Fail\n")); hTortoiseGit = NIL; return; } TRACE(_T("LoadRealLibrary() - Success\n")); pDllGetClassObject = nullptr; pDllCanUnloadNow = nullptr; pDllGetClassObject = (LPFNGETCLASSOBJECT)GetProcAddress(hTortoiseGit, GetClassObject); if (!pDllGetClassObject) { TRACE(_T("LoadRealLibrary() - Fail\n")); FreeLibrary(hTortoiseGit); hTortoiseGit = NIL; return; } pDllCanUnloadNow = (LPFNCANUNLOADNOW)GetProcAddress(hTortoiseGit, CanUnloadNow); if (!pDllCanUnloadNow) { TRACE(_T("LoadRealLibrary() - Fail\n")); FreeLibrary(hTortoiseGit); hTortoiseGit = NIL; return; } }