Mercurial > ~mikael > mcabber > hg
diff mcabber/src/commands.c @ 439:63562fd409a1
/info can show multiple resources
Add buddy_getresources() and teach /info about multiple resources.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Tue, 20 Sep 2005 21:27:21 +0200 |
parents | b44be19d6229 |
children | 5927c3bfba13 |
line wrap: on
line diff
--- a/mcabber/src/commands.c Mon Sep 19 23:32:42 2005 +0200 +++ b/mcabber/src/commands.c Tue Sep 20 21:27:21 2005 +0200 @@ -616,9 +616,8 @@ static void do_info(char *arg) { gpointer bud; - const char *jid, *name, *st_msg; + const char *jid, *name; guint type; - enum imstatus status; char *buffer; if (!current_buddy) return; @@ -627,12 +626,11 @@ jid = buddy_getjid(bud); name = buddy_getname(bud); type = buddy_gettype(bud); - status = buddy_getstatus(bud, NULL); - st_msg = buddy_getstatusmsg(bud, NULL); buffer = g_new(char, 128); if (jid) { + GSList *resources; char *typestr = "unknown"; snprintf(buffer, 127, "jid: <%s>", jid); @@ -641,20 +639,34 @@ snprintf(buffer, 127, "Name: %s", name); scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); } - if (st_msg) { - snprintf(buffer, 127, "Status message: %s", st_msg); - scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); - } - if (type == ROSTER_TYPE_USER) typestr = "user"; + if (type == ROSTER_TYPE_USER) typestr = "user"; else if (type == ROSTER_TYPE_AGENT) typestr = "agent"; - snprintf(buffer, 127, "Type: %s", typestr); scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + + resources = buddy_getresources(bud); + for ( ; resources ; resources = g_slist_next(resources) ) { + gchar rprio; + enum imstatus rstatus; + const char *rst_msg; + + rprio = buddy_getresourceprio(bud, resources->data); + rstatus = buddy_getstatus(bud, resources->data); + rst_msg = buddy_getstatusmsg(bud, resources->data); + + snprintf(buffer, 127, "Resource: [%c] (%d) %s", imstatus2char[rstatus], + rprio, (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); + } + } } else { if (name) scr_LogPrint(LPRINT_NORMAL, "Name: %s", name); scr_LogPrint(LPRINT_NORMAL, "Type: %s", - ((type == ROSTER_TYPE_GROUP) ? "group" : "unknown")); + ((type == ROSTER_TYPE_GROUP) ? "group" : "unknown")); } g_free(buffer);