--- a/mcabber/src/hooks.c Fri Oct 07 19:15:26 2005 +0200
+++ b/mcabber/src/hooks.c Fri Oct 07 20:12:11 2005 +0200
@@ -66,6 +66,9 @@
if (bmsg) g_free(bmsg);
return;
}
+ } else if (is_groupchat) {
+ // Make sure the type is ROOM
+ buddy_settype(roster_usr->data, ROSTER_TYPE_ROOM);
}
is_room = !!(buddy_gettype(roster_usr->data) & ROSTER_TYPE_ROOM);
--- a/mcabber/src/jabglue.c Fri Oct 07 19:15:26 2005 +0200
+++ b/mcabber/src/jabglue.c Fri Oct 07 20:12:11 2005 +0200
@@ -678,7 +678,7 @@
}
void gotmessage(char *type, const char *from, const char *body,
- const char *enc, time_t timestamp)
+ const char *enc, time_t timestamp)
{
char *jid;
const char *rname;
@@ -889,7 +889,7 @@
else r = s;
// Display inside the room window
mbuf = g_strdup_printf("%s has set the topic to: %s", r,
- (subj_noutf8 ? subj_noutf8 : "(?)"));
+ (subj_noutf8 ? subj_noutf8 : "(?)"));
scr_WriteIncomingMessage(s, mbuf, 0, HBB_PREFIX_INFO);
if (settings_opt_get_int("log_muc_conf"))
hlog_write_message(s, 0, FALSE, mbuf);
@@ -1134,7 +1134,11 @@
int log_muc_conf = settings_opt_get_int("log_muc_conf");
// Add room if it doesn't already exist
- room_elt = roster_add_user(r, NULL, NULL, ROSTER_TYPE_ROOM);
+ room_elt = roster_find(r, jidsearch, 0);
+ if (!room_elt)
+ room_elt = roster_add_user(r, NULL, NULL, ROSTER_TYPE_ROOM);
+ else // Make sure this is a room (it can be a conversion user->room)
+ buddy_settype(room_elt->data, ROSTER_TYPE_ROOM);
// Get room member's information
y = xmlnode_get_tag(x, "item");
--- a/mcabber/src/roster.c Fri Oct 07 19:15:26 2005 +0200
+++ b/mcabber/src/roster.c Fri Oct 07 20:12:11 2005 +0200
@@ -798,6 +798,12 @@
return (gpointer)((GSList*)roster_usr->list)->data;
}
+void buddy_settype(gpointer rosterdata, guint type)
+{
+ roster *roster_usr = rosterdata;
+ roster_usr->type = type;
+}
+
guint buddy_gettype(gpointer rosterdata)
{
roster *roster_usr = rosterdata;
--- a/mcabber/src/roster.h Fri Oct 07 19:15:26 2005 +0200
+++ b/mcabber/src/roster.h Fri Oct 07 20:12:11 2005 +0200
@@ -71,6 +71,7 @@
const char *buddy_getname(gpointer rosterdata);
void buddy_setnickname(gpointer rosterdata, const char *newname);
const char *buddy_getnickname(gpointer rosterdata);
+void buddy_settype(gpointer rosterdata, guint type);
guint buddy_gettype(gpointer rosterdata);
void buddy_setgroup(gpointer rosterdata, char *newgroupname);
const char *buddy_getgroupname(gpointer rosterdata);