# HG changeset patch # User ivan.komarov@soc.pidgin.im # Date 1277398561 0 # Node ID 1a81e5b647798c0534a28660f88439b63e6f5e1a # Parent 47392e1f491d308ba26e37d53879199bd65827cc Adium guys need the itmsurl stuff, which I erroneously removed without thinking twice. Shame on me. diff -r 47392e1f491d -r 1a81e5b64779 libpurple/protocols/oscar/family_oservice.c --- a/libpurple/protocols/oscar/family_oservice.c Wed Jun 23 22:32:45 2010 +0000 +++ b/libpurple/protocols/oscar/family_oservice.c Thu Jun 24 16:56:01 2010 +0000 @@ -883,7 +883,7 @@ int aim_srv_setextrainfo(OscarData *od, gboolean seticqstatus, guint32 icqstatus, - gboolean setstatusmsg, const char *statusmsg) + gboolean setstatusmsg, const char *statusmsg, const char *itmsurl) { FlapConnection *conn; ByteStream bs; @@ -911,15 +911,18 @@ if (setstatusmsg) { - size_t statusmsglen; + size_t statusmsglen, itmsurllen; ByteStream tmpbs; statusmsglen = (statusmsg != NULL) ? strlen(statusmsg) : 0; + itmsurllen = (itmsurl != NULL) ? strlen(itmsurl) : 0; - byte_stream_new(&tmpbs, statusmsglen + 8); + byte_stream_new(&tmpbs, statusmsglen + 8 + itmsurllen + 8); byte_stream_put_bart_asset_str(&tmpbs, 0x0002, statusmsg); + byte_stream_put_bart_asset_str(&tmpbs, 0x0009, itmsurl); - aim_tlvlist_add_raw(&tlvlist, 0x001d, byte_stream_curpos(&tmpbs), tmpbs.data); + aim_tlvlist_add_raw(&tlvlist, 0x001d, + byte_stream_curpos(&tmpbs), tmpbs.data); byte_stream_destroy(&tmpbs); } diff -r 47392e1f491d -r 1a81e5b64779 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Wed Jun 23 22:32:45 2010 +0000 +++ b/libpurple/protocols/oscar/oscar.c Thu Jun 24 16:56:01 2010 +0000 @@ -3238,7 +3238,7 @@ PurpleStatus *status; gboolean is_available; PurplePresence *presence; - const char *username, *message; + const char *username, *message, *itmsurl; char *tmp; va_list ap; guint16 maxpermits, maxdenies; @@ -3279,7 +3279,8 @@ else message = NULL; tmp = purple_markup_strip_html(message); - aim_srv_setextrainfo(od, FALSE, 0, is_available, tmp); + itmsurl = purple_status_get_attr_string(status, "itmsurl"); + aim_srv_setextrainfo(od, FALSE, 0, is_available, tmp, itmsurl); g_free(tmp); presence = purple_status_get_presence(status); @@ -3904,7 +3905,7 @@ static void oscar_set_extended_status(PurpleConnection *gc) { - aim_srv_setextrainfo(purple_connection_get_protocol_data(gc), TRUE, oscar_get_extended_status(gc), FALSE, NULL); + aim_srv_setextrainfo(purple_connection_get_protocol_data(gc), TRUE, oscar_get_extended_status(gc), FALSE, NULL, NULL); } static void @@ -3925,6 +3926,7 @@ gsize awaylen = 0; char *status_text = NULL; + const char *itmsurl = NULL; status_type = purple_status_get_type(status); primitive = purple_status_type_get_primitive(status_type); @@ -4017,7 +4019,9 @@ } } - aim_srv_setextrainfo(od, TRUE, oscar_get_extended_status(gc), TRUE, status_text); + itmsurl = purple_status_get_attr_string(status, "itmsurl"); + + aim_srv_setextrainfo(od, TRUE, oscar_get_extended_status(gc), TRUE, status_text, itmsurl); g_free(status_text); } } diff -r 47392e1f491d -r 1a81e5b64779 libpurple/protocols/oscar/oscar.h --- a/libpurple/protocols/oscar/oscar.h Wed Jun 23 22:32:45 2010 +0000 +++ b/libpurple/protocols/oscar/oscar.h Thu Jun 24 16:56:01 2010 +0000 @@ -723,7 +723,7 @@ /* 0x0014 */ void aim_srv_setprivacyflags(OscarData *od, FlapConnection *conn, guint32); /* 0x0016 */ void aim_srv_nop(OscarData *od, FlapConnection *conn); /* 0x0017 */ void aim_srv_setversions(OscarData *od, FlapConnection *conn); -/* 0x001e */ int aim_srv_setextrainfo(OscarData *od, gboolean seticqstatus, guint32 icqstatus, gboolean setstatusmsg, const char *statusmsg); +/* 0x001e */ int aim_srv_setextrainfo(OscarData *od, gboolean seticqstatus, guint32 icqstatus, gboolean setstatusmsg, const char *statusmsg, const char *itmsurl); void aim_bos_reqrights(OscarData *od, FlapConnection *conn);