comparison mcabber/src/hooks.c @ 1450:c6ebf66a4f80

Add option 'log_display_presence' By default status changes are not displayed anymore.
author Mikael Berthe <mikael@lilotux.net>
date Wed, 02 Apr 2008 21:17:19 +0200
parents a9a1770e4578
children 7b36b91a4388
comparison
equal deleted inserted replaced
1449:a9a1770e4578 1450:c6ebf66a4f80
286 286
287 void hk_statuschange(const char *bjid, const char *resname, gchar prio, 287 void hk_statuschange(const char *bjid, const char *resname, gchar prio,
288 time_t timestamp, enum imstatus status, 288 time_t timestamp, enum imstatus status,
289 const char *status_msg) 289 const char *status_msg)
290 { 290 {
291 int buddy_format;
292 int st_in_buf; 291 int st_in_buf;
293 enum imstatus oldstat; 292 enum imstatus oldstat;
294 char *bn = NULL; 293 char *bn;
295 char *logsmsg; 294 char *logsmsg;
296 const char *rn = (resname ? resname : ""); 295 const char *rn = (resname ? resname : "");
297 const char *ename = NULL; 296 const char *ename = NULL;
298 297
299 if (settings_opt_get_int("eventcmd_use_nickname")) 298 if (settings_opt_get_int("eventcmd_use_nickname"))
300 ename = roster_getname(bjid); 299 ename = roster_getname(bjid);
301 300
301 oldstat = roster_getstatus(bjid, resname);
302
302 st_in_buf = settings_opt_get_int("show_status_in_buffer"); 303 st_in_buf = settings_opt_get_int("show_status_in_buffer");
303 buddy_format = settings_opt_get_int("buddy_format"); 304
304 if (buddy_format) { 305 if (settings_opt_get_int("log_display_presence")) {
305 const char *name = roster_getname(bjid); 306 int buddy_format = settings_opt_get_int("buddy_format");
306 if (name && strcmp(name, bjid)) { 307 bn = NULL;
307 if (buddy_format == 1) 308 if (buddy_format) {
308 bn = g_strdup_printf("%s <%s/%s>", name, bjid, rn); 309 const char *name = roster_getname(bjid);
309 else if (buddy_format == 2) 310 if (name && strcmp(name, bjid)) {
310 bn = g_strdup_printf("%s/%s", name, rn); 311 if (buddy_format == 1)
311 else if (buddy_format == 3) 312 bn = g_strdup_printf("%s <%s/%s>", name, bjid, rn);
312 bn = g_strdup_printf("%s", name); 313 else if (buddy_format == 2)
313 } 314 bn = g_strdup_printf("%s/%s", name, rn);
314 } 315 else if (buddy_format == 3)
315 316 bn = g_strdup_printf("%s", name);
316 if (!bn) { 317 }
317 bn = g_strdup_printf("<%s/%s>", bjid, rn); 318 }
318 } 319
319 320 if (!bn)
320 logsmsg = g_strdup(status_msg ? status_msg : ""); 321 bn = g_strdup_printf("<%s/%s>", bjid, rn);
321 replace_nl_with_dots(logsmsg); 322
322 323 logsmsg = g_strdup(status_msg ? status_msg : "");
323 oldstat = roster_getstatus(bjid, resname); 324 replace_nl_with_dots(logsmsg);
324 scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s", 325
325 imstatus2char[oldstat], imstatus2char[status], bn, logsmsg); 326 scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s",
326 g_free(logsmsg); 327 imstatus2char[oldstat], imstatus2char[status], bn, logsmsg);
327 g_free(bn); 328 g_free(logsmsg);
329 g_free(bn);
330 }
328 331
329 if (st_in_buf == 2 || 332 if (st_in_buf == 2 ||
330 (st_in_buf == 1 && (status == offline || oldstat == offline))) { 333 (st_in_buf == 1 && (status == offline || oldstat == offline))) {
331 // Write the status change in the buddy's buffer, only if it already exists 334 // Write the status change in the buddy's buffer, only if it already exists
332 if (scr_BuddyBufferExists(bjid)) { 335 if (scr_BuddyBufferExists(bjid)) {