# HG changeset patch # User sh!zeeg # Date 1400075840 -14400 # Node ID 36170c97a0b70bbb3a0732dacc03b3a3f9113ef1 # Parent fef71336e429a8a3ca5a0f26cbf61903e0d5afe1 show actor's nick and jid on kick/ban if available diff -r fef71336e429 -r 36170c97a0b7 mcabber/mcabber/xmpp_muc.c --- a/mcabber/mcabber/xmpp_muc.c Wed May 14 14:20:44 2014 +0400 +++ b/mcabber/mcabber/xmpp_muc.c Wed May 14 17:57:20 2014 +0400 @@ -307,7 +307,7 @@ const char **actorjid, const char **reason) { LmMessageNode *y, *z; - const char *p; + const char *p, *actornick; y = lm_message_node_find_child(xmldata, "item"); if (!y) @@ -337,10 +337,13 @@ // For kick/ban, there can be actor and reason tags z = lm_message_node_find_child(y, "actor"); if (z) { - // prefer nick over jid - *actorjid = lm_message_node_get_attribute(z, "nick"); - if (!*actorjid) - *actorjid = lm_message_node_get_attribute(z, "jid"); + actornick = lm_message_node_get_attribute(z, "nick"); + *actorjid = lm_message_node_get_attribute(z, "jid"); + if (*actorjid) { // we have actor's jid, check if we also have nick. + *actorjid = (!actornick) ? *actorjid : g_strdup_printf( + "%s <%s>", actornick, *actorjid + ); + } else if (actornick) *actorjid = actornick; // we have nick only. } *reason = lm_message_node_get_child_value(y, "reason"); @@ -627,11 +630,11 @@ gchar *reason_msg = NULL; // Forced leave if (actorjid) { - mbuf_end = g_strdup_printf("%s from %s by <%s>.", + mbuf_end = g_strdup_printf("%s from %s by %s", (how == ban ? "banned" : "kicked"), roomjid, actorjid); } else { - mbuf_end = g_strdup_printf("%s from %s.", + mbuf_end = g_strdup_printf("%s from %s", (how == ban ? "banned" : "kicked"), roomjid); }