static void _callback_foreach_buddy_groupchat(gpointer rosterdata, void *param) { LmMessageNode *field, *option; const char *room_jid, *nickname; char *desc; room_jid = buddy_getjid(rosterdata); if (!room_jid) return; nickname = buddy_getnickname(rosterdata); if (!nickname) return; field = param; option = lm_message_node_add_child(field, "option", NULL); lm_message_node_add_child(option, "value", room_jid); desc = g_strdup_printf("%s on %s", nickname, room_jid); lm_message_node_set_attribute(option, "label", desc); g_free(desc); }
void roompresence(gpointer room, void *presencedata) { const char *bjid; const char *nickname; char *to; struct T_presence *pres = presencedata; if (!buddy_getinsideroom(room)) return; bjid = buddy_getjid(room); if (!bjid) return; nickname = buddy_getnickname(room); if (!nickname) return; to = g_strdup_printf("%s/%s", bjid, nickname); xmpp_setstatus(pres->st, to, pres->msg, TRUE); g_free(to); }