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