# HG changeset patch # User Mikael Berthe # Date 1130796291 -3600 # Node ID 321ae11e7ddb0a26dc02ca0a0f097ed8cfa54f6b # Parent ddec224c2318592e9c3a804a13886b16be07725f Prettier display for "/room names" diff -r ddec224c2318 -r 321ae11e7ddb mcabber/src/commands.c --- a/mcabber/src/commands.c Mon Oct 31 22:35:35 2005 +0100 +++ b/mcabber/src/commands.c Mon Oct 31 23:04:51 2005 +0100 @@ -838,6 +838,48 @@ g_free(buffer); } +// room_names() is a variation of do_info(), for chatrooms only +static void room_names(void) +{ + gpointer bud; + const char *jid; + char *buffer; + GSList *resources; + + if (!current_buddy) return; + bud = BUDDATA(current_buddy); + + if (buddy_gettype(bud) != ROSTER_TYPE_ROOM) { + scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom"); + return; + } + + jid = buddy_getjid(bud); + + buffer = g_new(char, 128); + snprintf(buffer, 127, "Room members:"); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + + resources = buddy_getresources(bud); + for ( ; resources ; resources = g_slist_next(resources) ) { + enum imstatus rstatus; + const char *rst_msg; + + rstatus = buddy_getstatus(bud, resources->data); + rst_msg = buddy_getstatusmsg(bud, resources->data); + + snprintf(buffer, 127, "[%c] %s", imstatus2char[rstatus], + (char*)resources->data); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + if (rst_msg) { + snprintf(buffer, 127, "Status message: %s", rst_msg); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + } + } + + g_free(buffer); +} + static void do_rename(char *arg) { gpointer bud; @@ -1136,7 +1178,7 @@ scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom"); return; } - do_info(NULL); + room_names(); } else if (!strncasecmp(arg, "nick", 4)) { gchar *cmd; arg += 4;