# HG changeset patch # User Mikael Berthe # Date 1136494871 -3600 # Node ID d26a1c9611dbc8f5e3555bf6d5ca358dcc10dff4 # Parent 68fb0c1dfb1592244a4b17be6de2358f0ceef4e2 Small handle_presence_muc() update diff -r 68fb0c1dfb15 -r d26a1c9611db mcabber/src/jabglue.c --- 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