Mercurial > ~mikael > mcabber > hg
comparison mcabber/src/jabglue.c @ 205:e01bf6d9b4b8
[/trunk] Changeset 217 by mikael
* Add the /del command
author | mikael |
---|---|
date | Sat, 07 May 2005 18:38:40 +0000 |
parents | a05d5c3876ec |
children | 8b08f34922c5 |
comparison
equal
deleted
inserted
replaced
204:dcb5ed79f719 | 205:e01bf6d9b4b8 |
---|---|
329 g_free(cleanjid); | 329 g_free(cleanjid); |
330 buddylist_build(); | 330 buddylist_build(); |
331 | 331 |
332 // maybe not needed: if user appears his status will change | 332 // maybe not needed: if user appears his status will change |
333 //update_roster = TRUE; | 333 //update_roster = TRUE; |
334 } | |
335 | |
336 void jb_delbuddy(const char *jid) | |
337 { | |
338 xmlnode x, y, z; | |
339 char *cleanjid; | |
340 | |
341 if (!online) return; | |
342 | |
343 // XXX Check jid (but perhaps caller should do it) | |
344 | |
345 cleanjid = jidtodisp(jid); | |
346 | |
347 // If the current buddy is an agent, unsubscribe from it | |
348 if (roster_gettype(cleanjid) == ROSTER_TYPE_AGENT) { | |
349 scr_LogPrint("Unregistering from the %s agent", cleanjid); | |
350 | |
351 x = jutil_iqnew(JPACKET__SET, NS_REGISTER); | |
352 xmlnode_put_attrib(x, "to", cleanjid); | |
353 y = xmlnode_get_tag(x, "query"); | |
354 xmlnode_insert_tag(y, "remove"); | |
355 jab_send(jc, x); | |
356 xmlnode_free(x); | |
357 } | |
358 | |
359 // Unsubscribe this buddy from our presence notification | |
360 x = jutil_presnew(JPACKET__UNSUBSCRIBE, cleanjid, 0); | |
361 jab_send(jc, x); | |
362 xmlnode_free(x); | |
363 | |
364 // Ask for removal from roster | |
365 x = jutil_iqnew(JPACKET__SET, NS_ROSTER); | |
366 y = xmlnode_get_tag(x, "query"); | |
367 z = xmlnode_insert_tag(y, "item"); | |
368 xmlnode_put_attrib(z, "jid", cleanjid); | |
369 xmlnode_put_attrib(z, "subscription", "remove"); | |
370 jab_send(jc, x); | |
371 xmlnode_free(x); | |
372 | |
373 roster_del_user(cleanjid); | |
374 g_free(cleanjid); | |
375 buddylist_build(); | |
376 | |
377 update_roster = TRUE; | |
334 } | 378 } |
335 | 379 |
336 void postlogin() | 380 void postlogin() |
337 { | 381 { |
338 //int i; | 382 //int i; |
735 scr_LogPrint("Away msg: %s", p); | 779 scr_LogPrint("Away msg: %s", p); |
736 */ | 780 */ |
737 break; | 781 break; |
738 | 782 |
739 case JPACKET_S10N: | 783 case JPACKET_S10N: |
740 scr_LogPrint("Received subscription packet"); | 784 scr_LogPrint("Received (un)subscription packet (type=%s)", |
741 if (type) scr_LogPrint("Type=%s", type); | 785 ((type) ? type : "")); |
742 | 786 |
743 if (!strcmp(type, "subscribe")) { | 787 if (!strcmp(type, "subscribe")) { |
744 int isagent; | 788 int isagent; |
745 r = jidtodisp(from); | 789 r = jidtodisp(from); |
746 isagent = (roster_gettype(r) & ROSTER_TYPE_AGENT) != 0; | 790 isagent = (roster_gettype(r) & ROSTER_TYPE_AGENT) != 0; |