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);
+}
+