# HG changeset patch # User Mikael Berthe # Date 1207163839 -7200 # Node ID c6ebf66a4f807d3d98541d1c2cf672901e7958a8 # Parent a9a1770e45780333a7e3efb958de9a0bc0c102d2 Add option 'log_display_presence' By default status changes are not displayed anymore. diff -r a9a1770e4578 -r c6ebf66a4f80 mcabber/mcabberrc.example --- a/mcabber/mcabberrc.example Thu Mar 27 23:40:39 2008 +0100 +++ b/mcabber/mcabberrc.example Wed Apr 02 21:17:19 2008 +0200 @@ -400,6 +400,12 @@ # set "buddy_me_fulljid" to 1 (default: 0) #set buddy_me_fulljid = 1 # +# Display the status changes in the log window (default: 0, never) +# Set 'log_display_presence' to 1 to enable. +#set log_display_presence = 0 +# +#set show_status_in_buffer = 1 +# # Display the status changes in the chat buffers (default: 0, never) # Values: 0: never 1: only connect/disconnect 2: all #set show_status_in_buffer = 1 diff -r a9a1770e4578 -r c6ebf66a4f80 mcabber/src/hooks.c --- a/mcabber/src/hooks.c Thu Mar 27 23:40:39 2008 +0100 +++ b/mcabber/src/hooks.c Wed Apr 02 21:17:19 2008 +0200 @@ -288,10 +288,9 @@ time_t timestamp, enum imstatus status, const char *status_msg) { - int buddy_format; int st_in_buf; enum imstatus oldstat; - char *bn = NULL; + char *bn; char *logsmsg; const char *rn = (resname ? resname : ""); const char *ename = NULL; @@ -299,33 +298,37 @@ if (settings_opt_get_int("eventcmd_use_nickname")) ename = roster_getname(bjid); + oldstat = roster_getstatus(bjid, resname); + st_in_buf = settings_opt_get_int("show_status_in_buffer"); - buddy_format = settings_opt_get_int("buddy_format"); - if (buddy_format) { - const char *name = roster_getname(bjid); - if (name && strcmp(name, bjid)) { - if (buddy_format == 1) - bn = g_strdup_printf("%s <%s/%s>", name, bjid, rn); - else if (buddy_format == 2) - bn = g_strdup_printf("%s/%s", name, rn); - else if (buddy_format == 3) - bn = g_strdup_printf("%s", name); + + if (settings_opt_get_int("log_display_presence")) { + int buddy_format = settings_opt_get_int("buddy_format"); + bn = NULL; + if (buddy_format) { + const char *name = roster_getname(bjid); + if (name && strcmp(name, bjid)) { + if (buddy_format == 1) + bn = g_strdup_printf("%s <%s/%s>", name, bjid, rn); + else if (buddy_format == 2) + bn = g_strdup_printf("%s/%s", name, rn); + else if (buddy_format == 3) + bn = g_strdup_printf("%s", name); + } } + + if (!bn) + bn = g_strdup_printf("<%s/%s>", bjid, rn); + + logsmsg = g_strdup(status_msg ? status_msg : ""); + replace_nl_with_dots(logsmsg); + + scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s", + imstatus2char[oldstat], imstatus2char[status], bn, logsmsg); + g_free(logsmsg); + g_free(bn); } - if (!bn) { - bn = g_strdup_printf("<%s/%s>", bjid, rn); - } - - logsmsg = g_strdup(status_msg ? status_msg : ""); - replace_nl_with_dots(logsmsg); - - oldstat = roster_getstatus(bjid, resname); - scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s", - imstatus2char[oldstat], imstatus2char[status], bn, logsmsg); - g_free(logsmsg); - g_free(bn); - if (st_in_buf == 2 || (st_in_buf == 1 && (status == offline || oldstat == offline))) { // Write the status change in the buddy's buffer, only if it already exists