# HG changeset patch # User Richard Laager # Date 1142319554 0 # Node ID 702107dd58f19825e9add3b2474cb3ea551d3750 # Parent c358be635301f5c87fc6e725d1975d822717e5b5 [gaim-migrate @ 15883] I noticed that we were writing "FOO has signed off" noticed to the system log after we disconnected. With the HTML logger, this results in a new ... block being added, with a duplicate header and everything. It seems we shouldn't be writing these messages after the system log has been closed. "Fixing" the HTML logger might be a good idea as well. committer: Tailor Script diff -r c358be635301 -r 702107dd58f1 plugins/ChangeLog.API --- a/plugins/ChangeLog.API Tue Mar 14 06:38:05 2006 +0000 +++ b/plugins/ChangeLog.API Tue Mar 14 06:59:14 2006 +0000 @@ -113,6 +113,7 @@ This means that plugins must be updated to expect such a socket from gaim_proxy_connect() and gaim_network_listen*(). * gaim_gtk_create_imhtml(): Added sw_ret() parameter + * gaim_account_get_log(): Added create parameter Removed: * gaim_gtk_sound_{get,set}_mute() (replaced by the /gaim/gtk/sound/mute diff -r c358be635301 -r 702107dd58f1 plugins/perl/common/Account.xs --- a/plugins/perl/common/Account.xs Tue Mar 14 06:38:05 2006 +0000 +++ b/plugins/perl/common/Account.xs Tue Mar 14 06:59:14 2006 +0000 @@ -181,8 +181,9 @@ } Gaim::Log -gaim_account_get_log(account) +gaim_account_get_log(account, create) Gaim::Account account + gboolean create void gaim_account_destroy_log(account) diff -r c358be635301 -r 702107dd58f1 src/account.c --- a/src/account.c Tue Mar 14 06:38:05 2006 +0000 +++ b/src/account.c Tue Mar 14 06:59:14 2006 +0000 @@ -1924,11 +1924,11 @@ } GaimLog * -gaim_account_get_log(GaimAccount *account) +gaim_account_get_log(GaimAccount *account, gboolean create) { g_return_val_if_fail(account != NULL, NULL); - if(!account->system_log){ + if(!account->system_log && create){ GaimPresence *presence; int login_time; diff -r c358be635301 -r 702107dd58f1 src/account.h --- a/src/account.h Tue Mar 14 06:38:05 2006 +0000 +++ b/src/account.h Tue Mar 14 06:59:14 2006 +0000 @@ -705,13 +705,18 @@ /** * Returns the system log for an account. - * Create it if it doesn't already exist. * * @param account The account. + * @param create Should it be created if it doesn't exist? * * @return The log. + * + * @note Callers should almost always pass @c FALSE for @a create. + * Passing @c TRUE could result in an existing log being reopened, + * if the log has already been closed, which not all loggers deal + * with appropriately. */ -GaimLog *gaim_account_get_log(GaimAccount *account); +GaimLog *gaim_account_get_log(GaimAccount *account, gboolean create); /** * Frees the system log of an account diff -r c358be635301 -r 702107dd58f1 src/connection.c --- a/src/connection.c Tue Mar 14 06:38:05 2006 +0000 +++ b/src/connection.c Tue Mar 14 06:59:14 2006 +0000 @@ -262,9 +262,6 @@ } if (gc->state == GAIM_CONNECTED) { -#if 0 - GList *wins; -#endif GaimAccount *account; GaimPresence *presence; @@ -276,14 +273,18 @@ if (gaim_prefs_get_bool("/core/logging/log_system")) { - GaimLog *log = gaim_account_get_log(account); - char *msg = g_strdup_printf(_("+++ %s signed on"), - gaim_account_get_username(account)); - gaim_log_write(log, GAIM_MESSAGE_SYSTEM, - gaim_account_get_username(account), - gaim_presence_get_login_time(presence), - msg); - g_free(msg); + GaimLog *log = gaim_account_get_log(account, TRUE); + + if (log != NULL) + { + char *msg = g_strdup_printf(_("+++ %s signed on"), + gaim_account_get_username(account)); + gaim_log_write(log, GAIM_MESSAGE_SYSTEM, + gaim_account_get_username(account), + gaim_presence_get_login_time(presence), + msg); + g_free(msg); + } } if (ops != NULL && ops->connected != NULL) @@ -291,19 +292,6 @@ gaim_blist_add_account(account); - /* - * XXX This is a hack! Remove this and replace it with a better event - * notification system. - */ -#if 0 - /* This looks like it was horribly broken before I got here... */ - /* Why is it updating the first tab of each window? */ - for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { - GaimConvWindow *win = (GaimConvWindow *)wins->data; - gaim_conversation_update(gaim_conv_window_get_conversation_at(win, 0), - GAIM_CONV_ACCOUNT_ONLINE); - } -#endif gaim_signal_emit(gaim_connections_get_handle(), "signed-on", gc); serv_set_permit_deny(gc); @@ -318,13 +306,17 @@ if (gaim_prefs_get_bool("/core/logging/log_system")) { - GaimLog *log = gaim_account_get_log(account); - char *msg = g_strdup_printf(_("+++ %s signed off"), - gaim_account_get_username(account)); - gaim_log_write(log, GAIM_MESSAGE_SYSTEM, - gaim_account_get_username(account), time(NULL), - msg); - g_free(msg); + GaimLog *log = gaim_account_get_log(account, FALSE); + + if (log != NULL) + { + char *msg = g_strdup_printf(_("+++ %s signed off"), + gaim_account_get_username(account)); + gaim_log_write(log, GAIM_MESSAGE_SYSTEM, + gaim_account_get_username(account), time(NULL), + msg); + g_free(msg); + } } gaim_account_destroy_log(account); diff -r c358be635301 -r 702107dd58f1 src/status.c --- a/src/status.c Tue Mar 14 06:38:05 2006 +0000 +++ b/src/status.c Tue Mar 14 06:59:14 2006 +0000 @@ -646,10 +646,14 @@ if (tmp != NULL) { - GaimLog *log = gaim_account_get_log(buddy->account); + GaimLog *log = gaim_account_get_log(buddy->account, FALSE); - gaim_log_write(log, GAIM_MESSAGE_SYSTEM, buddy_alias, - current_time, tmp); + if (log != NULL) + { + gaim_log_write(log, GAIM_MESSAGE_SYSTEM, buddy_alias, + current_time, tmp); + } + g_free(tmp); } } @@ -1318,26 +1322,34 @@ { if (gaim_prefs_get_bool("/core/logging/log_system")) { - GaimLog *log = gaim_account_get_log(buddy->account); - char *tmp = g_strdup_printf(_("%s became idle"), - gaim_buddy_get_alias(buddy)); + GaimLog *log = gaim_account_get_log(buddy->account, FALSE); - gaim_log_write(log, GAIM_MESSAGE_SYSTEM, - gaim_buddy_get_alias(buddy), current_time, tmp); - g_free(tmp); + if (log != NULL) + { + char *tmp = g_strdup_printf(_("%s became idle"), + gaim_buddy_get_alias(buddy)); + + gaim_log_write(log, GAIM_MESSAGE_SYSTEM, + gaim_buddy_get_alias(buddy), current_time, tmp); + g_free(tmp); + } } } else if (old_idle && !idle) { if (gaim_prefs_get_bool("/core/logging/log_system")) { - GaimLog *log = gaim_account_get_log(buddy->account); - char *tmp = g_strdup_printf(_("%s became unidle"), - gaim_buddy_get_alias(buddy)); + GaimLog *log = gaim_account_get_log(buddy->account, FALSE); - gaim_log_write(log, GAIM_MESSAGE_SYSTEM, - gaim_buddy_get_alias(buddy), current_time, tmp); - g_free(tmp); + if (log != NULL) + { + char *tmp = g_strdup_printf(_("%s became unidle"), + gaim_buddy_get_alias(buddy)); + + gaim_log_write(log, GAIM_MESSAGE_SYSTEM, + gaim_buddy_get_alias(buddy), current_time, tmp); + g_free(tmp); + } } } @@ -1390,17 +1402,21 @@ if (gaim_prefs_get_bool("/core/logging/log_system")) { - GaimLog *log = gaim_account_get_log(account); - char *msg; + GaimLog *log = gaim_account_get_log(account, FALSE); + + if (log != NULL) + { + char *msg; - if (idle) - msg = g_strdup_printf(_("+++ %s became idle"), gaim_account_get_username(account)); - else - msg = g_strdup_printf(_("+++ %s became unidle"), gaim_account_get_username(account)); - gaim_log_write(log, GAIM_MESSAGE_SYSTEM, - gaim_account_get_username(account), - idle_time, msg); - g_free(msg); + if (idle) + msg = g_strdup_printf(_("+++ %s became idle"), gaim_account_get_username(account)); + else + msg = g_strdup_printf(_("+++ %s became unidle"), gaim_account_get_username(account)); + gaim_log_write(log, GAIM_MESSAGE_SYSTEM, + gaim_account_get_username(account), + idle_time, msg); + g_free(msg); + } } gc = gaim_account_get_connection(account);