# HG changeset patch # User Herman Bloggs # Date 1068580307 0 # Node ID 29d69daa1ede7d70b07d409d95a7bc88748b1fda # Parent b7b1d416ff440935560290fa328881553a21b243 [gaim-migrate @ 8090] Some better error checking and fix for #777647. Global file mode set to binary. committer: Tailor Script diff -r b7b1d416ff44 -r 29d69daa1ede src/win_gaim.c --- a/src/win_gaim.c Tue Nov 11 07:26:35 2003 +0000 +++ b/src/win_gaim.c Tue Nov 11 19:51:47 2003 +0000 @@ -23,6 +23,7 @@ * */ #include +#include #include #include #include @@ -217,8 +218,8 @@ char *lpszCmdLine, int nCmdShow) { + char errbuf[512]; char gaimdir[MAX_PATH]; - char *point; HMODULE hmod; /* If GAIM_NO_DLL_CHECK is set, don't run the dll check */ @@ -226,24 +227,38 @@ run_dll_prep(); /* Load exception handler if we have it */ - GetModuleFileName(NULL, gaimdir, MAX_PATH); - if((point=strstr(gaimdir, "gaim.exe"))) { - point[0] = '\0'; - strcat(gaimdir, "exchndl.dll"); - LoadLibrary(gaimdir); + if(GetModuleFileName(NULL, gaimdir, MAX_PATH) != 0) { + char *tmp = gaimdir; + char *prev = NULL; + + while((tmp=strchr(tmp, '\\'))) { + prev = tmp; + tmp+=1; + } + if(prev) { + prev[0] = '\0'; + strcat(gaimdir, "\\exchndl.dll"); + LoadLibrary(gaimdir); + } } - + else { + snprintf(errbuf, 512, "Error getting module filename. Error: %u", (UINT)GetLastError()); + MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST); + } + /* Set Gaim locale */ wgaim_set_locale(); + /* Set global file mode to binary so that we don't do any dos file translations */ + _fmode = _O_BINARY; + /* Now we are ready for Gaim .. */ if((hmod=LoadLibrary("gaim.dll"))) { gaim_main = (void*)GetProcAddress(hmod, "gaim_main"); } if(!gaim_main) { - char errbuf[256]; - sprintf(errbuf, "Error loading gaim.dll entry point. Error: %d", GetLastError()); + snprintf(errbuf, 512, "Error loading gaim.dll. Error: %u", (UINT)GetLastError()); MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST); return 0; }