changeset 244:5f8b529412bd

[/trunk] Changeset 257 by mikael * Let the /add command set the nickname
author mikael
date Tue, 14 Jun 2005 19:35:37 +0000
parents c07fa9baca3f
children 7ca7ca850270
files mcabber/src/commands.c mcabber/src/jabglue.c mcabber/src/jabglue.h
diffstat 3 files changed, 25 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Tue Jun 14 18:01:23 2005 +0000
+++ b/mcabber/src/commands.c	Tue Jun 14 19:35:37 2005 +0000
@@ -300,15 +300,25 @@
 
 void do_add(char *arg)
 {
+  char *id, *nick;
   if (!arg || (*arg == 0)) {
     scr_LogPrint("Wrong usage");
     return;
   }
 
-  // FIXME check arg =~ jabber id
-  // 2nd parameter = optional nickname (XXX NULL for now...)
-  jb_addbuddy(arg, NULL);
-  scr_LogPrint("Sent presence notfication request to <%s>", arg);
+  id = g_strdup(arg);
+  nick = strchr(id, ' ');
+  if (nick) {
+    *nick++ = 0;
+    while (*nick && *nick == ' ')
+      nick++;
+  }
+
+  // FIXME check id =~ jabber id
+  // 2nd parameter = optional nickname
+  jb_addbuddy(id, nick, NULL);
+  scr_LogPrint("Sent presence notfication request to <%s>", id);
+  g_free(id);
 }
 
 void do_del(char *arg)
--- a/mcabber/src/jabglue.c	Tue Jun 14 18:01:23 2005 +0000
+++ b/mcabber/src/jabglue.c	Tue Jun 14 19:35:37 2005 +0000
@@ -301,7 +301,7 @@
 }
 
 // Note: the caller should check the jid is correct
-void jb_addbuddy(const char *jid, const char *group)
+void jb_addbuddy(const char *jid, const char *name, const char *group)
 {
   xmlnode x, y, z;
   char *cleanjid;
@@ -321,6 +321,13 @@
   z = xmlnode_insert_tag(y, "item");
   xmlnode_put_attrib(z, "jid", jid);
 
+  if (name) {
+    char *name_utf8 = utf8_encode(name);
+    z = xmlnode_insert_tag(z, "name");
+    xmlnode_insert_cdata(z, name_utf8, (unsigned) -1);
+    free(name_utf8);
+  }
+
   if (group) {
     char *group_utf8 = utf8_encode(group);
     z = xmlnode_insert_tag(z, "group");
@@ -332,12 +339,11 @@
   xmlnode_free(x);
 
   cleanjid = jidtodisp(jid);
-  roster_add_user(cleanjid, NULL, group, ROSTER_TYPE_USER);
+  roster_add_user(cleanjid, name, group, ROSTER_TYPE_USER);
   g_free(cleanjid);
   buddylist_build();
 
-  // useless IMHO: if user appears his status will change
-  //update_roster = TRUE;
+  update_roster = TRUE;
 }
 
 void jb_delbuddy(const char *jid)
--- a/mcabber/src/jabglue.h	Tue Jun 14 18:01:23 2005 +0000
+++ b/mcabber/src/jabglue.h	Tue Jun 14 19:35:37 2005 +0000
@@ -40,7 +40,7 @@
 jconn jb_connect(const char *jid, unsigned int port, int ssl, const char *pass);
 void jb_disconnect(void);
 void jb_main();
-void jb_addbuddy(const char *jid, const char *group);
+void jb_addbuddy(const char *jid, const char *name, const char *group);
 void jb_delbuddy(const char *jid);
 void jb_updatebuddy(const char *jid, const char *name, const char *group);
 inline enum imstatus jb_getstatus();