Mercurial > ~mikael > mcabber > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
438:b44be19d6229 | 439:63562fd409a1 |
---|---|
614 } | 614 } |
615 | 615 |
616 static void do_info(char *arg) | 616 static void do_info(char *arg) |
617 { | 617 { |
618 gpointer bud; | 618 gpointer bud; |
619 const char *jid, *name, *st_msg; | 619 const char *jid, *name; |
620 guint type; | 620 guint type; |
621 enum imstatus status; | |
622 char *buffer; | 621 char *buffer; |
623 | 622 |
624 if (!current_buddy) return; | 623 if (!current_buddy) return; |
625 bud = BUDDATA(current_buddy); | 624 bud = BUDDATA(current_buddy); |
626 | 625 |
627 jid = buddy_getjid(bud); | 626 jid = buddy_getjid(bud); |
628 name = buddy_getname(bud); | 627 name = buddy_getname(bud); |
629 type = buddy_gettype(bud); | 628 type = buddy_gettype(bud); |
630 status = buddy_getstatus(bud, NULL); | |
631 st_msg = buddy_getstatusmsg(bud, NULL); | |
632 | 629 |
633 buffer = g_new(char, 128); | 630 buffer = g_new(char, 128); |
634 | 631 |
635 if (jid) { | 632 if (jid) { |
633 GSList *resources; | |
636 char *typestr = "unknown"; | 634 char *typestr = "unknown"; |
637 | 635 |
638 snprintf(buffer, 127, "jid: <%s>", jid); | 636 snprintf(buffer, 127, "jid: <%s>", jid); |
639 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); | 637 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); |
640 if (name) { | 638 if (name) { |
641 snprintf(buffer, 127, "Name: %s", name); | 639 snprintf(buffer, 127, "Name: %s", name); |
642 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); | 640 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); |
643 } | 641 } |
644 if (st_msg) { | 642 |
645 snprintf(buffer, 127, "Status message: %s", st_msg); | 643 if (type == ROSTER_TYPE_USER) typestr = "user"; |
646 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); | |
647 } | |
648 | |
649 if (type == ROSTER_TYPE_USER) typestr = "user"; | |
650 else if (type == ROSTER_TYPE_AGENT) typestr = "agent"; | 644 else if (type == ROSTER_TYPE_AGENT) typestr = "agent"; |
651 | |
652 snprintf(buffer, 127, "Type: %s", typestr); | 645 snprintf(buffer, 127, "Type: %s", typestr); |
653 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); | 646 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); |
647 | |
648 resources = buddy_getresources(bud); | |
649 for ( ; resources ; resources = g_slist_next(resources) ) { | |
650 gchar rprio; | |
651 enum imstatus rstatus; | |
652 const char *rst_msg; | |
653 | |
654 rprio = buddy_getresourceprio(bud, resources->data); | |
655 rstatus = buddy_getstatus(bud, resources->data); | |
656 rst_msg = buddy_getstatusmsg(bud, resources->data); | |
657 | |
658 snprintf(buffer, 127, "Resource: [%c] (%d) %s", imstatus2char[rstatus], | |
659 rprio, (char*)resources->data); | |
660 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); | |
661 if (rst_msg) { | |
662 snprintf(buffer, 127, "Status message: %s", rst_msg); | |
663 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); | |
664 } | |
665 } | |
654 } else { | 666 } else { |
655 if (name) scr_LogPrint(LPRINT_NORMAL, "Name: %s", name); | 667 if (name) scr_LogPrint(LPRINT_NORMAL, "Name: %s", name); |
656 scr_LogPrint(LPRINT_NORMAL, "Type: %s", | 668 scr_LogPrint(LPRINT_NORMAL, "Type: %s", |
657 ((type == ROSTER_TYPE_GROUP) ? "group" : "unknown")); | 669 ((type == ROSTER_TYPE_GROUP) ? "group" : "unknown")); |
658 } | 670 } |
659 | 671 |
660 g_free(buffer); | 672 g_free(buffer); |
661 } | 673 } |
662 | 674 |