changeset 645:d26a1c9611db

Small handle_presence_muc() update
author Mikael Berthe <mikael@lilotux.net>
date Thu, 05 Jan 2006 22:01:11 +0100
parents 68fb0c1dfb15
children a8cb28ca5ff4
files mcabber/src/jabglue.c
diffstat 1 files changed, 25 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/jabglue.c	Thu Jan 05 20:20:57 2006 +0100
+++ b/mcabber/src/jabglue.c	Thu Jan 05 22:01:11 2006 +0100
@@ -1126,21 +1126,24 @@
   } else if (buddy_getstatus(room_elt->data, rname) == offline &&
              ust != offline) {
     gchar *mbuf;
+    const char *ournick = buddy_getnickname(room_elt->data);
+
+    if (!ournick) {
+      // I think it shouldn't happen, but let's put a warning for a while...
+      mbuf = g_strdup_printf("MUC ERR: you have no nickname, "
+                             "please send a bug report!");
+      scr_LogPrint(LPRINT_LOGNORM, mbuf);
+      scr_WriteIncomingMessage(roomjid, mbuf, 0, HBB_PREFIX_INFO);
+      g_free(mbuf);
+      buddylist_build();
+      scr_DrawRoster();
+      return;
+    }
+
     if (!buddy_getinsideroom(room_elt->data)) {
-      const char *ournick = buddy_getnickname(room_elt->data);
       // We weren't inside the room yet.  Now we are.
       // However, this could be a presence packet from another room member
 
-      if (!ournick) {
-        // I think it shouldn't happen, but let's put a warning for a while...
-        scr_LogPrint(LPRINT_LOGNORM, "MUC ERR: you have no nickname, "
-                     "please send a bug report!");
-        ournick = "";
-        buddylist_build();
-        scr_DrawRoster();
-        return;
-      }
-
       buddy_setinsideroom(room_elt->data, TRUE);
       // Add a message to the tracelog file
       mbuf = g_strdup_printf("You have joined %s as \"%s\"", roomjid, ournick);
@@ -1158,12 +1161,18 @@
         mbuf = g_strdup_printf("%s has joined", rname);
       }
     } else {
-      mbuf = g_strdup_printf("%s has joined", rname);
+      if (strcmp(ournick, rname))
+        mbuf = g_strdup_printf("%s has joined", rname);
+      else
+        mbuf = NULL;
     }
-    scr_WriteIncomingMessage(roomjid, mbuf, usttime,
-                             HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG);
-    if (log_muc_conf) hlog_write_message(roomjid, 0, FALSE, mbuf);
-    g_free(mbuf);
+
+    if (mbuf) {
+      scr_WriteIncomingMessage(roomjid, mbuf, usttime,
+                               HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG);
+      if (log_muc_conf) hlog_write_message(roomjid, 0, FALSE, mbuf);
+      g_free(mbuf);
+    }
   }
 
   // Update room member status