--- a/mcabber/src/hooks.c Sat Nov 12 15:02:25 2005 +0100
+++ b/mcabber/src/hooks.c Sat Nov 12 17:36:20 2005 +0100
@@ -145,11 +145,32 @@
time_t timestamp, enum imstatus status,
const char *status_msg)
{
+ int buddy_format;
+ char *bn = NULL;
const char *rn = (resname ? resname : "default");
- scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] <%s/%s> %s",
+
+ buddy_format = settings_opt_get_int("buddy_format");
+ if (buddy_format) {
+ const char *name = roster_getname(jid);
+ if (name && strcmp(name, jid)) {
+ if (buddy_format == 1)
+ bn = g_strdup_printf("%s <%s/%s>", name, jid, 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>", jid, rn);
+ }
+
+ scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s",
imstatus2char[roster_getstatus(jid, resname)],
- imstatus2char[status], jid, rn,
+ imstatus2char[status], bn,
((status_msg) ? status_msg : ""));
+ g_free(bn);
roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL);
buddylist_build();
scr_DrawRoster();
--- a/mcabber/src/roster.c Sat Nov 12 15:02:25 2005 +0100
+++ b/mcabber/src/roster.c Sat Nov 12 17:36:20 2005 +0100
@@ -489,6 +489,20 @@
}
}
+const char *roster_getname(const char *jid)
+{
+ GSList *sl_user;
+ roster *roster_usr;
+
+ sl_user = roster_find(jid, jidsearch,
+ ROSTER_TYPE_USER|ROSTER_TYPE_ROOM|ROSTER_TYPE_AGENT);
+ if (sl_user == NULL)
+ return NULL; // Not in the roster...
+
+ roster_usr = (roster*)sl_user->data;
+ return roster_usr->name;
+}
+
void roster_settype(const char *jid, guint type)
{
GSList *sl_user;
--- a/mcabber/src/roster.h Sat Nov 12 15:02:25 2005 +0100
+++ b/mcabber/src/roster.h Sat Nov 12 17:36:20 2005 +0100
@@ -57,6 +57,7 @@
enum imrole role, const char *realjid);
void roster_setflags(const char *jid, guint flags, guint value);
void roster_msg_setflag(const char *jid, guint value);
+const char *roster_getname(const char *jid);
void roster_settype(const char *jid, guint type);
enum imstatus roster_getstatus(const char *jid, const char *resname);
const char *roster_getstatusmsg(const char *jid, const char *resname);