--- 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();