# HG changeset patch # User Daniel Atallah # Date 1162164517 0 # Node ID 036927fddcbaaed58ac369eca17cffe46ec35f0f # Parent 2405b9e6f05f25f0dbb60f1b28804f0b40c3b534 [gaim-migrate @ 17620] A couple patches from Lee Roach. -Delete the Perl loader link library when making clean. -Force the Tcl loader plugin to use the ActiveTcl installation. This will prevent 99.99% of the cygwin "hang on start" issues, at the cost of having the Tcl loader not work for some people - if you're one of the 5 or so people using the Tcl loader on win32, you can figure out how to fix it - maybe we'll add a faq entry. This should cut down on the frequent bug reports of gaim failing to start. committer: Tailor Script diff -r 2405b9e6f05f -r 036927fddcba COPYRIGHT --- a/COPYRIGHT Sun Oct 29 15:59:05 2006 +0000 +++ b/COPYRIGHT Sun Oct 29 23:28:37 2006 +0000 @@ -243,6 +243,7 @@ Pekka Riikonen Tim Ringenbach Dennis Ristuccia +Lee Roach Rhett Robinson Luciano Miguel Ferreira Rocha Andrew Rodland diff -r 2405b9e6f05f -r 036927fddcba libgaim/plugins/perl/Makefile.mingw --- a/libgaim/plugins/perl/Makefile.mingw Sun Oct 29 15:59:05 2006 +0000 +++ b/libgaim/plugins/perl/Makefile.mingw Sun Oct 29 23:28:37 2006 +0000 @@ -76,7 +76,7 @@ ## clean: rm -rf $(OBJECTS) - rm -rf $(TARGET).dll + rm -rf $(TARGET).dll $(TARGET).dll.a $(MAKE) -C ./common -f $(GAIM_WIN32_MAKEFILE) clean include $(GAIM_COMMON_TARGETS) diff -r 2405b9e6f05f -r 036927fddcba libgaim/plugins/tcl/tcl.c --- a/libgaim/plugins/tcl/tcl.c Sun Oct 29 15:59:05 2006 +0000 +++ b/libgaim/plugins/tcl/tcl.c Sun Oct 29 23:28:37 2006 +0000 @@ -437,36 +437,50 @@ #define Tk_Init wtk_Init static gboolean tcl_win32_init() { - gaim_debug(GAIM_DEBUG_INFO, "tcl", - "Initializing the Tcl runtime. If Gaim doesn't load, it is " - "most likely because you have cygwin in your PATH and you " - "should remove it. See http://gaim.sf.net/win32 for more " - "information\n"); + const char regkey[] = "SOFTWARE\\ActiveState\\ActiveTcl\\"; + char *version = NULL; + gboolean retval = FALSE; + + if ((version = wgaim_read_reg_string(HKEY_LOCAL_MACHINE, regkey, "CurrentVersion")) + || (version = wgaim_read_reg_string(HKEY_CURRENT_USER, regkey, "CurrentVersion"))) { + char *path; + char *regkey2; + + regkey2 = g_strdup_printf("%s%s\\", regkey, version); + if ((path = wgaim_read_reg_string(HKEY_LOCAL_MACHINE, regkey2, NULL)) || (path = wgaim_read_reg_string(HKEY_CURRENT_USER, regkey2, NULL))) { + char *tclpath; + char *tkpath; + + gaim_debug(GAIM_DEBUG_INFO, "tcl", "Loading ActiveTCL version %s from \"%s\"\n", version, path); - if(!(wtcl_CreateInterp = (LPFNTCLCREATEINTERP) wgaim_find_and_loadproc("tcl84.dll", "Tcl_CreateInterp"))) { - gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tcl_CreateInterp\n"); - return FALSE; + tclpath = g_build_filename(path, "bin", "tcl84.dll", NULL); + tkpath = g_build_filename(path, "bin", "tk84.dll", NULL); + + if(!(wtcl_CreateInterp = (LPFNTCLCREATEINTERP) wgaim_find_and_loadproc(tclpath, "Tcl_CreateInterp"))) { + gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tcl_CreateInterp\n"); + } else { + if(!(wtk_Init = (LPFNTKINIT) wgaim_find_and_loadproc(tkpath, "Tk_Init"))) { + HMODULE mod; + gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tk_Init\n"); + if((mod = GetModuleHandle("tcl84.dll"))) + FreeLibrary(mod); + } else { + retval = TRUE; + } + } + g_free(tclpath); + g_free(tkpath); + } + g_free(path); + g_free(regkey2); } - if(!(wtk_Init = (LPFNTKINIT) wgaim_find_and_loadproc("tk84.dll", "Tk_Init"))) { - HMODULE mod; - gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tk_Init\n"); - if((mod = GetModuleHandle("tcl84.dll"))) - FreeLibrary(mod); - return FALSE; - } + g_free(version); - if (GetModuleHandle("cygwin1.dll")) { - HMODULE mod; - gaim_debug(GAIM_DEBUG_INFO, "tcl", "Cygwin has been loaded by tcl84.dll and/or tk84.dll. Disabling Tcl support to avoid problems.\n"); - if((mod = GetModuleHandle("tcl84.dll"))) - FreeLibrary(mod); - if((mod = GetModuleHandle("tk84.dll"))) - FreeLibrary(mod); - return FALSE; - } + if (!retval) + gaim_debug(GAIM_DEBUG_INFO, "tcl", _("Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n")); - return TRUE; + return retval; } #endif /* _WIN32 */