Example #1
0
/*
 * 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 */
}
Example #2
0
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;
    }
}