changeset 2005:e0aedfa091ec

Print real jids in non-anonymous rooms.
author Hermitifier
date Tue, 07 Feb 2012 12:13:02 +0100
parents aa7e03c35488
children fa6694a193ec
files mcabber/mcabber/xmpp_muc.c
diffstat 1 files changed, 19 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/mcabber/xmpp_muc.c	Thu Jan 26 10:11:03 2012 +0100
+++ b/mcabber/mcabber/xmpp_muc.c	Tue Feb 07 12:13:02 2012 +0100
@@ -350,12 +350,19 @@
 static bool muc_handle_join(const GSList *room_elt, const char *rname,
                             const char *roomjid, const char *ournick,
                             enum room_printstatus printstatus,
-                            time_t usttime, int log_muc_conf)
+                            time_t usttime, int log_muc_conf,
+                            enum room_autowhois autowhois, const char *mbjid)
 {
   bool new_member = FALSE; // True if somebody else joins the room (not us)
+  gchar *nickjid;
   gchar *mbuf;
   enum room_flagjoins flagjoins;
 
+  if (mbjid && autowhois == autowhois_off)
+    nickjid = g_strdup_printf("%s <%s>", rname, mbjid);
+  else
+    nickjid = g_strdup(rname);
+
   if (!buddy_getinsideroom(room_elt->data)) {
     // We weren't inside the room yet.  Now we are.
     // However, this could be a presence packet from another room member
@@ -380,7 +387,7 @@
         hlog_write_message(roomjid, 0, -1, mbuf);
       g_free(mbuf);
       if (printstatus != status_none)
-        mbuf = g_strdup_printf("%s has joined", rname);
+        mbuf = g_strdup_printf("%s has joined", nickjid);
       else
         mbuf = NULL;
       new_member = TRUE;
@@ -389,11 +396,13 @@
     mbuf = NULL;
     if (strcmp(ournick, rname)) {
       if (printstatus != status_none)
-        mbuf = g_strdup_printf("%s has joined", rname);
+        mbuf = g_strdup_printf("%s has joined", nickjid);
       new_member = TRUE;
     }
   }
 
+  g_free(nickjid);
+
   if (mbuf) {
     guint msgflags = HBB_PREFIX_INFO;
     flagjoins = buddy_getflagjoins(room_elt->data);
@@ -574,6 +583,11 @@
     nickchange = TRUE;
   }
 
+  autowhois = buddy_getautowhois(room_elt->data);
+  if (autowhois == autowhois_default)
+    autowhois = (settings_opt_get_int("muc_auto_whois") ?
+                 autowhois_on : autowhois_off);
+
   // Check for departure/arrival
   if (statuscode != 303 && ust == offline) {
     // Somebody is leaving
@@ -680,7 +694,8 @@
     if (old_ust == offline && ust != offline) {
       // Somebody is joining
       new_member = muc_handle_join(room_elt, rname, roomjid, ournick,
-                                   printstatus, usttime, log_muc_conf);
+                                   printstatus, usttime, log_muc_conf,
+                                   autowhois, mbjid);
     } else {
       // This is a simple member status change
 
@@ -705,11 +720,6 @@
   roster_setstatus(roomjid, rname, bpprio, ust, ustmsg, usttime,
                    mbrole, mbaffil, mbjid);
 
-  autowhois = buddy_getautowhois(room_elt->data);
-  if (autowhois == autowhois_default)
-    autowhois = (settings_opt_get_int("muc_auto_whois") ?
-                 autowhois_on : autowhois_off);
-
   if (new_member && autowhois == autowhois_on) {
     cmd_room_whois(room_elt->data, rname, FALSE);
   }