# HG changeset patch # User mikael # Date 1118777737 0 # Node ID 5f8b529412bd1df4d95314043cf4dffafed3c249 # Parent c07fa9baca3f9012e3b2a53c2cf357aa98678a40 [/trunk] Changeset 257 by mikael * Let the /add command set the nickname diff -r c07fa9baca3f -r 5f8b529412bd mcabber/src/commands.c --- 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) diff -r c07fa9baca3f -r 5f8b529412bd mcabber/src/jabglue.c --- 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) diff -r c07fa9baca3f -r 5f8b529412bd mcabber/src/jabglue.h --- 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();