Mercurial > hg
changeset 191:24e6bcb589b0
[/trunk] Changeset 203 by mikael
* Add /info command.
author | mikael |
---|---|
date | Fri, 06 May 2005 15:31:37 +0000 |
parents | 9c2023d60986 |
children | 62bc2992216b |
files | mcabber/src/commands.c |
diffstat | 1 files changed, 45 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/commands.c Fri May 06 15:10:16 2005 +0000 +++ b/mcabber/src/commands.c Fri May 06 15:31:37 2005 +0000 @@ -27,6 +27,7 @@ #include "screen.h" #include "compl.h" #include "hooks.h" +#include "hbuf.h" #include "utf8.h" #include "utils.h" @@ -38,6 +39,7 @@ void do_say(char *arg); void do_buffer(char *arg); void do_clear(char *arg); +void do_info(char *arg); // Global variable for the commands list static GSList *Commands; @@ -70,7 +72,7 @@ //cmd_add("del"); cmd_add("group", "Change group display settings", COMPL_GROUP, 0, &do_group); cmd_add("help", "Display some help", COMPL_CMD, 0, NULL); - //cmd_add("info"); + cmd_add("info", "Show basic infos on current buddy", 0, 0, &do_info); //cmd_add("move"); //cmd_add("nick"); cmd_add("quit", "Exit the software", 0, 0, NULL); @@ -361,3 +363,45 @@ do_buffer("clear"); } +void do_info(char *arg) +{ + gpointer bud; + const char *jid, *name; + guint type; + enum imstatus status; + char *buffer; + + if (!current_buddy) return; + bud = BUDDATA(current_buddy); + + jid = buddy_getjid(bud); + name = buddy_getname(bud); + type = buddy_gettype(bud); + status = buddy_getstatus(bud); + + buffer = g_new(char, 128); + + if (jid) { + char *typestr = "unknown"; + + snprintf(buffer, 127, "jid: <%s>", jid); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + if (name) { + snprintf(buffer, 127, "Name: %s", name); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + } + + 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); + } else { + if (name) scr_LogPrint("Name: %s", name); + scr_LogPrint("Type: %s", + ((type == ROSTER_TYPE_GROUP) ? "group" : "unknown")); + } + + g_free(buffer); +} +