mcabber/src/jabglue.c
changeset 244 5f8b529412bd
parent 241 8584f919d9b9
child 272 7f2e61392b2e
equal deleted inserted replaced
243:c07fa9baca3f 244:5f8b529412bd
   299   free(buffer);
   299   free(buffer);
   300   jb_reset_keepalive();
   300   jb_reset_keepalive();
   301 }
   301 }
   302 
   302 
   303 // Note: the caller should check the jid is correct
   303 // Note: the caller should check the jid is correct
   304 void jb_addbuddy(const char *jid, const char *group)
   304 void jb_addbuddy(const char *jid, const char *name, const char *group)
   305 {
   305 {
   306   xmlnode x, y, z;
   306   xmlnode x, y, z;
   307   char *cleanjid;
   307   char *cleanjid;
   308 
   308 
   309   if (!online) return;
   309   if (!online) return;
   318 
   318 
   319   x = jutil_iqnew(JPACKET__SET, NS_ROSTER);
   319   x = jutil_iqnew(JPACKET__SET, NS_ROSTER);
   320   y = xmlnode_get_tag(x, "query");
   320   y = xmlnode_get_tag(x, "query");
   321   z = xmlnode_insert_tag(y, "item");
   321   z = xmlnode_insert_tag(y, "item");
   322   xmlnode_put_attrib(z, "jid", jid);
   322   xmlnode_put_attrib(z, "jid", jid);
       
   323 
       
   324   if (name) {
       
   325     char *name_utf8 = utf8_encode(name);
       
   326     z = xmlnode_insert_tag(z, "name");
       
   327     xmlnode_insert_cdata(z, name_utf8, (unsigned) -1);
       
   328     free(name_utf8);
       
   329   }
   323 
   330 
   324   if (group) {
   331   if (group) {
   325     char *group_utf8 = utf8_encode(group);
   332     char *group_utf8 = utf8_encode(group);
   326     z = xmlnode_insert_tag(z, "group");
   333     z = xmlnode_insert_tag(z, "group");
   327     xmlnode_insert_cdata(z, group_utf8, (unsigned) -1);
   334     xmlnode_insert_cdata(z, group_utf8, (unsigned) -1);
   330 
   337 
   331   jab_send(jc, x);
   338   jab_send(jc, x);
   332   xmlnode_free(x);
   339   xmlnode_free(x);
   333 
   340 
   334   cleanjid = jidtodisp(jid);
   341   cleanjid = jidtodisp(jid);
   335   roster_add_user(cleanjid, NULL, group, ROSTER_TYPE_USER);
   342   roster_add_user(cleanjid, name, group, ROSTER_TYPE_USER);
   336   g_free(cleanjid);
   343   g_free(cleanjid);
   337   buddylist_build();
   344   buddylist_build();
   338 
   345 
   339   // useless IMHO: if user appears his status will change
   346   update_roster = TRUE;
   340   //update_roster = TRUE;
       
   341 }
   347 }
   342 
   348 
   343 void jb_delbuddy(const char *jid)
   349 void jb_delbuddy(const char *jid)
   344 {
   350 {
   345   xmlnode x, y, z;
   351   xmlnode x, y, z;