# HG changeset patch # User Mark Doliner # Date 1104360539 0 # Node ID 6a20307ef8dc6a0b706654a24ac51d4fecf10383 # Parent 6feef0a9098ab6bbd199d86e4e481b8035d243bb [gaim-migrate @ 11713] Fix the problem with accounts.xml being loaded before the plugins were probed. This fixes the Yahoo! crash mentioned by the guy on gaim-devel and a guy in #gaim, and a few other obscure problems. Plugins are probed* by the core now instead of the UI. Less work for UI implementors means less code duplication and makes it more likely someone will write a new UI. *Probing loads the PRPLs and any loader plugins (perl, tcl, etc.), and makes plugin information available everywhere else. committer: Tailor Script diff -r 6feef0a9098a -r 6a20307ef8dc src/account.c --- a/src/account.c Wed Dec 29 21:53:59 2004 +0000 +++ b/src/account.c Wed Dec 29 22:48:59 2004 +0000 @@ -312,6 +312,10 @@ continue; str_type = xmlnode_get_attrib(child, "type"); + if (str_type == NULL) + /* Ignore this setting */ + continue; + if (!strcmp(str_type, "string")) type = GAIM_PREF_STRING; else if (!strcmp(str_type, "int")) diff -r 6feef0a9098a -r 6a20307ef8dc src/core.c --- a/src/core.c Wed Dec 29 21:53:59 2004 +0000 +++ b/src/core.c Wed Dec 29 22:48:59 2004 +0000 @@ -78,6 +78,8 @@ /* Initialize all static protocols. */ static_proto_init(); + gaim_plugins_probe(NULL); + if (ops != NULL) { if (ops->ui_prefs_init != NULL) @@ -136,7 +138,7 @@ gaim_prefs_uninit(); gaim_sound_uninit(); - gaim_debug(GAIM_DEBUG_INFO, "main", "Unloading all plugins\n"); + gaim_debug_info("main", "Unloading all plugins\n"); gaim_plugins_destroy_all(); ops = gaim_core_get_ui_ops(); diff -r 6feef0a9098a -r 6a20307ef8dc src/debug.c --- a/src/debug.c Wed Dec 29 21:53:59 2004 +0000 +++ b/src/debug.c Wed Dec 29 22:48:59 2004 +0000 @@ -51,12 +51,12 @@ if (debug_enabled) { gchar *arg_s, *ts_s; - gboolean timestamps; arg_s = g_strdup_vprintf(format, args); - timestamps = gaim_prefs_get_bool("/core/debug/timestamps");; - if ((category != NULL) && (timestamps)) { + if ((category != NULL) && + (gaim_prefs_exists("/core/debug/timestamps")) && + (gaim_prefs_get_bool("/core/debug/timestamps"))) { gchar mdate[64]; time_t mtime = time(NULL); diff -r 6feef0a9098a -r 6a20307ef8dc src/gtkdebug.c --- a/src/gtkdebug.c Wed Dec 29 21:53:59 2004 +0000 +++ b/src/gtkdebug.c Wed Dec 29 22:48:59 2004 +0000 @@ -513,4 +513,3 @@ return &handle; } - diff -r 6feef0a9098a -r 6a20307ef8dc src/gtkmain.c --- a/src/gtkmain.c Wed Dec 29 21:53:59 2004 +0000 +++ b/src/gtkmain.c Wed Dec 29 22:48:59 2004 +0000 @@ -75,6 +75,7 @@ static SnDisplay *sn_display = NULL; #endif +/* TODO: Get this out of here? */ int docklet_count = 0; #if HAVE_SIGNAL_H @@ -588,6 +589,13 @@ return 1; } + /* + * We're done piddling around with command line arguments. + * Fire up this baby. + */ + + gaim_debug_set_enabled(debug_enabled); + #ifdef _WIN32 wgaim_init(hint); #endif @@ -608,11 +616,6 @@ abort(); } - gaim_debug_set_enabled(debug_enabled); - - /* TODO: Do this in gaim_core_init() instead of here */ - gaim_plugins_probe(NULL); - /* TODO: Remove this check. Maybe in 2005. --KingAnt, 25 Jul 2004 */ gaimrc = g_build_filename(gaim_home_dir(), ".gaimrc", NULL); accountsxml = g_build_filename(gaim_user_dir(), "accounts.xml", NULL); diff -r 6feef0a9098a -r 6a20307ef8dc src/plugin.h --- a/src/plugin.h Wed Dec 29 21:53:59 2004 +0000 +++ b/src/plugin.h Wed Dec 29 22:48:59 2004 +0000 @@ -367,7 +367,7 @@ /** * Add a new directory to search for plugins * - * @param paths The new search path. + * @param path The new search path. */ void gaim_plugins_add_search_path(const char *path);