# HG changeset patch # User Mark Doliner # Date 1276825195 0 # Node ID 62f7ea77feb30e7a04e3f1febc537f64309d130e # Parent 545ce15b619f5bb2f6b2470dd4e3b54a22e5cfeb Formatting changes. Hopefully I didn't break anything this time diff -r 545ce15b619f -r 62f7ea77feb3 libpurple/protocols/oscar/family_icbm.c --- a/libpurple/protocols/oscar/family_icbm.c Thu Jun 17 21:23:01 2010 +0000 +++ b/libpurple/protocols/oscar/family_icbm.c Fri Jun 18 01:39:55 2010 +0000 @@ -2684,9 +2684,9 @@ guchar *cookie; guint8 bnlen; char *xml = NULL; - int hdrlen; + guint16 hdrlen; int curpos; - int num1,num2; + guint16 num1, num2; char *desc, *title, *temp; PurpleAccount *account; PurpleBuddy *buddy; @@ -2702,50 +2702,52 @@ if (channel == 0x0002) { hdrlen = byte_stream_getle16(bs); - if ( ((hdrlen == 27 ) && (bs->len > (27 + 51)))) { + if (hdrlen == 27 && bs->len > (27 + 51)) { byte_stream_advance(bs, 51); num1 = byte_stream_getle16(bs); num2 = byte_stream_getle16(bs); - purple_debug_misc("oscar", "X-Status: Num1 %i, num2 %i\n",num1, num2); - - if(((num1 == 0x4f00)&&(num2 == 0x3b00))) { + purple_debug_misc("oscar", "X-Status: num1 %hu, num2 %hu\n", num1, num2); + + if (num1 == 0x4f00 && num2 == 0x3b00) { byte_stream_advance(bs, 86); curpos = byte_stream_curpos(bs); xml = byte_stream_getstr(bs, bs->len - curpos); purple_debug_misc("oscar", "X-Status: Received XML reply\n"); - if(xml) { - /* purple_debug_misc("oscar", "X-Status: XML reply: %s\n", (const char*) xml); */ - if ((desc=strstr(xml,"<desc>")) != NULL) { - temp=strstr(xml,"</desc>"); - temp[0]=0; - desc=desc+12; + if (xml) { + /* purple_debug_misc("oscar", "X-Status: XML reply: %s\n", xml); */ + desc = strstr(xml, "<desc>"); + if (desc != NULL) { + temp = strstr(xml, "</desc>"); + temp[0] = 0; + desc = desc + 12; } - if ((title=strstr(xml,"<title>")) != NULL) { - temp=strstr(xml,"</title>"); - temp[0]=0; - title=title+13; + title = strstr(xml, "<title>"); + if (title != NULL) { + temp = strstr(xml, "</title>"); + temp[0] = 0; + title = title + 13; } else { - title=""; + title = ""; } strcpy(xml,title); if (desc) { strcat(xml, " - "); strcat(xml, desc); } - purple_debug_misc("oscar", "X-Status reply: %s\n", (const char*)xml); + purple_debug_misc("oscar", "X-Status reply: %s\n", xml); account = purple_connection_get_account(od->gc); buddy = purple_find_buddy(account, bn); presence = purple_buddy_get_presence(buddy); status = purple_presence_get_active_status(presence); purple_prpl_got_user_status(account, bn, - purple_status_get_id(status), "message", xml, NULL); + purple_status_get_id(status), "message", xml, NULL); } else { purple_debug_misc("oscar", "X-Status: Can't get XML reply string\n"); } } else { - purple_debug_misc("oscar", "X-Status: 0x0004, 0x000b not an xstatus reply\n" ); - /* if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) - ret = userfunc(od, conn, frame, channel, sn, reason); */ + purple_debug_misc("oscar", "X-Status: 0x0004, 0x000b not an xstatus reply\n"); + /* if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) + ret = userfunc(od, conn, frame, channel, sn, reason); */ } } @@ -2884,7 +2886,7 @@ if (!bn) return -EINVAL; - byte_stream_new(&bs, 11+strlen(bn)+2); + byte_stream_new(&bs, 11 + strlen(bn) + 2); snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0014, 0x0000, NULL, 0); @@ -2930,24 +2932,22 @@ char *statxml; int xmllen; - static const guint8 pluginid[] = - { - 0x09, 0x46, 0x13, 0x49, 0x4C, 0x7F, 0x11, 0xD1, - 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 + static const guint8 pluginid[] = { + 0x09, 0x46, 0x13, 0x49, 0x4C, 0x7F, 0x11, 0xD1, + 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 }; - static const guint8 c_plugindata[] = - { - 0x1B, 0x00, 0x0A, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x4F, 0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0, 0x9C, - 0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x20, 0x50, 0x6C, 0x75, 0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74, - 0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, - 0x72, 0x72, 0x69, 0x76, 0x65, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00 + static const guint8 c_plugindata[] = { + 0x1B, 0x00, 0x0A, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x4F, 0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0, 0x9C, + 0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x53, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x20, 0x50, 0x6C, 0x75, 0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74, + 0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x72, 0x72, 0x69, 0x76, 0x65, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00 }; if (!od || !(conn = flap_connection_findbygroup(od, 0x0004))) @@ -2961,7 +2961,7 @@ account = purple_connection_get_account(od->gc); xmllen = strlen(fmt) - 2 + strlen(account->username); - statxml = (char*) g_malloc(xmllen); + statxml = g_malloc(xmllen); snprintf(statxml, xmllen, fmt, account->username); aim_icbm_makecookie(cookie); @@ -2975,8 +2975,6 @@ aim_im_puticbm(&bs, cookie, 0x0002, sn); byte_stream_new(&header, (7*2) + 16 + 8 + 2 + sizeof(c_plugindata) + xmllen); /* TLV 0x0005 Stream + Size */ - byte_stream_new(&plugindata, (sizeof(c_plugindata) + xmllen)); - byte_stream_put16(&header, 0x0000); /* Message Type: Request */ byte_stream_putraw(&header, cookie, sizeof(cookie)); /* Message ID */ byte_stream_putraw(&header, pluginid, sizeof(pluginid)); /* Plugin ID */ @@ -2985,22 +2983,23 @@ aim_tlvlist_add_noval(&inner_tlvlist, 0x000f); /* Add Plugin Specific Data */ + byte_stream_new(&plugindata, (sizeof(c_plugindata) + xmllen)); byte_stream_putraw(&plugindata, c_plugindata, sizeof(c_plugindata)); /* Content of TLV 0x2711 */ byte_stream_putstr(&plugindata, statxml); aim_tlvlist_add_raw(&inner_tlvlist, 0x2711, (sizeof(c_plugindata) + xmllen), plugindata.data); aim_tlvlist_write(&header, &inner_tlvlist); + aim_tlvlist_free(inner_tlvlist); aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&header), header.data); - aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); /* Empty TLV 0x0003 */ + aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); /* Empty TLV 0x0003 */ aim_tlvlist_write(&bs, &outer_tlvlist); purple_debug_misc("oscar", "X-Status Request\n"); flap_connection_send_snac_with_priority(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs, TRUE); - aim_tlvlist_free(inner_tlvlist); aim_tlvlist_free(outer_tlvlist); byte_stream_destroy(&header); byte_stream_destroy(&plugindata); @@ -3017,28 +3016,28 @@ aim_snacid_t snacid; PurpleAccount *account; PurpleStatus *status; - const char *fmt; - const char *formatted_msg; - char *msg; - char *statxml; + const char *fmt; + const char *formatted_msg; + char *msg; + char *statxml; const char *title; int len; static const guint8 plugindata[] = { - 0x1B, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4F, - 0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0, - 0x9C, 0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00, - 0x00, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x50, 0x6C, 0x75, - 0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74, - 0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x72, 0x72, 0x69, 0x76, 0x65, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF3, 0x01, 0x00, 0x00, 0xEF, 0x01, 0x00, 0x00 + 0x1B, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4F, + 0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0, + 0x9C, 0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00, + 0x00, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x50, 0x6C, 0x75, + 0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74, + 0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x72, 0x72, 0x69, 0x76, 0x65, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF3, 0x01, 0x00, 0x00, 0xEF, 0x01, 0x00, 0x00 }; fmt = "<ret event='OnRemoteNotification'><srv><id>cAwaySrv</id><val srv_id='cAwaySrv'><Root><CASXtraSetAwayMessage></CASXtraSetAwayMessage>&l t;uin>%s</uin><index>1</index><title>%s</title><desc>%s</desc></Root></val></srv><srv><id>cRandomizerSrv</id><val srv_id='cRandomizerSrv'>undefined</val></srv></ret>\r\n"; @@ -3050,24 +3049,32 @@ return -EINVAL; account = purple_connection_get_account(od->gc); - if(!account) return -EINVAL; - -/* if (!strcmp(account->username, sn)) + if (!account) + return -EINVAL; + + /* if (!strcmp(account->username, sn)) icq_im_xstatus_request(od, sn); */ - status = purple_presence_get_active_status(account->presence); - if (!status) return -EINVAL; - title = purple_status_get_name(status); - if (!title) return -EINVAL; + status = purple_presence_get_active_status(account->presence); + if (!status) + return -EINVAL; + + title = purple_status_get_name(status); + if (!title) + return -EINVAL; + formatted_msg = purple_status_get_attr_string(status, "message"); - if (!formatted_msg) return -EINVAL; - msg = purple_markup_strip_html(formatted_msg); - if (!msg) return -EINVAL; - len = strlen(fmt)-6+strlen(account->username)+strlen(title)+strlen(msg); - statxml = (char*) g_malloc(len); - - snprintf(statxml, len, fmt, - account->username, title, msg); + if (!formatted_msg) + return -EINVAL; + + msg = purple_markup_strip_html(formatted_msg); + if (!msg) + return -EINVAL; + + len = strlen(fmt) - 6 + strlen(account->username) + strlen(title) + strlen(msg); + statxml = g_malloc(len); + + snprintf(statxml, len, fmt, account->username, title, msg); purple_debug_misc("oscar", "X-Status AutoReply: %s, %s\n", formatted_msg, msg); @@ -3077,7 +3084,7 @@ aim_im_puticbm(&bs, cookie, 0x0002, sn); byte_stream_put16(&bs, 0x0003); byte_stream_putraw(&bs, plugindata, sizeof(plugindata)); - byte_stream_putraw(&bs, (const guint8*)statxml, strlen(statxml)); + byte_stream_putraw(&bs, (const guint8 *)statxml, strlen(statxml)); flap_connection_send_snac_with_priority(od, conn, 0x0004, 0x000b, 0x0000, snacid, &bs, TRUE);