From: <dat...@us...> - 2006-11-13 16:43:01
|
Revision: 17713 http://svn.sourceforge.net/gaim/?rev=17713&view=rev Author: datallah Date: 2006-11-09 12:13:26 -0800 (Thu, 09 Nov 2006) Log Message: ----------- Give a better error message. Point people in (hopefully) the right direction when GTK+ isn't found. Modified Paths: -------------- trunk/gtk/win32/win_gaim.c Modified: trunk/gtk/win32/win_gaim.c =================================================================== --- trunk/gtk/win32/win_gaim.c 2006-11-09 19:58:15 UTC (rev 17712) +++ trunk/gtk/win32/win_gaim.c 2006-11-09 20:13:26 UTC (rev 17713) @@ -63,7 +63,18 @@ static LPFNGAIMMAIN gaim_main = NULL; static LPFNSETDLLDIRECTORY MySetDllDirectory = NULL; +static const char *get_win32_error_message(DWORD err) { + static char err_msg[512]; + FormatMessage( + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, err, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &err_msg, sizeof(err_msg), NULL); + + return err_msg; +} + static BOOL read_reg_string(HKEY key, char* sub_key, char* val_name, LPBYTE data, LPDWORD data_len) { HKEY hkey; BOOL ret = FALSE; @@ -75,17 +86,13 @@ NULL, NULL, data, data_len))) ret = TRUE; else { - TCHAR szBuf[80]; + const char *err_msg = get_win32_error_message(retv); - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, - NULL, retv, 0, - (LPTSTR) &szBuf, sizeof(szBuf), NULL); - printf("Could not read reg key '%s' subkey '%s' value: '%s'.\nMessage: (%ld) %s\n", ((key == HKEY_LOCAL_MACHINE) ? "HKLM" : (key == HKEY_CURRENT_USER) ? "HKCU" : "???"), - sub_key, val_name, retv, szBuf); + sub_key, val_name, retv, err_msg); } RegCloseKey(hkey); } @@ -545,9 +552,11 @@ printf("Loaded exchndl.dll\n"); } } else { + DWORD dw = GetLastError(); + const char *err_msg = get_win32_error_message(dw); snprintf(errbuf, 512, - "Error getting module filename. Error: %u", - (UINT) GetLastError()); + "Error getting module filename.\nError: (%u) %s", + (UINT) dw, err_msg); MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST); } @@ -570,9 +579,16 @@ } if (!gaim_main) { - snprintf(errbuf, 512, "Error loading gaim.dll. Error: %u", - (UINT) GetLastError()); - MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST); + DWORD dw = GetLastError(); + BOOL mod_not_found = (dw == ERROR_MOD_NOT_FOUND || dw == ERROR_DLL_NOT_FOUND); + const char *err_msg = get_win32_error_message(dw); + + snprintf(errbuf, 512, "Error loading gtkgaim.dll.\nError: (%u) %s%s%s", + (UINT) dw, err_msg, + mod_not_found ? "\n" : "", + mod_not_found ? "This probably means that GTK+ can't be found." : ""); + MessageBox(NULL, errbuf, TEXT("Error"), MB_OK | MB_TOPMOST); + return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |