changeset 604:2e8342168ebc

"/info" shows buddy subscription
author Mikael Berthe <mikael@lilotux.net>
date Thu, 15 Dec 2005 13:04:34 +0100
parents 9516db839e08
children 2a4fefb98511
files mcabber/src/commands.c
diffstat 1 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Thu Dec 15 12:52:37 2005 +0100
+++ b/mcabber/src/commands.c	Thu Dec 15 13:04:34 2005 +0100
@@ -856,6 +856,7 @@
   const char *jid, *name;
   guint type;
   char *buffer;
+  enum subscr esub;
 
   if (!current_buddy) return;
   bud = BUDDATA(current_buddy);
@@ -863,12 +864,13 @@
   jid    = buddy_getjid(bud);
   name   = buddy_getname(bud);
   type   = buddy_gettype(bud);
+  esub   = buddy_getsubscription(bud);
 
   buffer = g_new(char, 128);
 
   if (jid) {
     GSList *resources;
-    char *typestr = "unknown";
+    char *bstr = "unknown";
 
     snprintf(buffer, 127, "jid:  <%s>", jid);
     scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
@@ -877,10 +879,19 @@
       scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
     }
 
-    if (type == ROSTER_TYPE_USER)       typestr = "user";
-    else if (type == ROSTER_TYPE_ROOM)  typestr = "chatroom";
-    else if (type == ROSTER_TYPE_AGENT) typestr = "agent";
-    snprintf(buffer, 127, "Type: %s", typestr);
+    if (type == ROSTER_TYPE_USER)       bstr = "user";
+    else if (type == ROSTER_TYPE_ROOM)  bstr = "chatroom";
+    else if (type == ROSTER_TYPE_AGENT) bstr = "agent";
+    snprintf(buffer, 127, "Type: %s", bstr);
+    scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
+
+    if (esub == sub_both)     bstr = "both";
+    else if (esub & sub_from) bstr = "from";
+    else if (esub & sub_to)   bstr = "to";
+    else bstr = "none";
+    snprintf(buffer, 64, "Subscription: %s", bstr);
+    if (esub & sub_pending)
+      strcat(buffer, " (pending)");
     scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
 
     resources = buddy_getresources(bud);