libpurple/protocols/yahoo/libymsg.c

changeset 35268
0ff850475a1d
parent 35266
23d7e28d7af3
child 35273
d96f03bbc4e6
equal deleted inserted replaced
35267:7fd6d7cba52d 35268:0ff850475a1d
1318 struct yahoo_packet *pkt; 1318 struct yahoo_packet *pkt;
1319 char *encoded_msg = NULL; 1319 char *encoded_msg = NULL;
1320 const char *who = add_req->who; 1320 const char *who = add_req->who;
1321 1321
1322 if (msg && *msg) 1322 if (msg && *msg)
1323 encoded_msg = yahoo_string_encode(add_req->gc, msg, NULL); 1323 encoded_msg = yahoo_string_encode(add_req->gc, msg, FALSE);
1324 1324
1325 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, 1325 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15,
1326 YAHOO_STATUS_AVAILABLE, yd->session_id); 1326 YAHOO_STATUS_AVAILABLE, yd->session_id);
1327 1327
1328 if (add_req->fed) { 1328 if (add_req->fed) {
1331 1, add_req->id, 1331 1, add_req->id,
1332 5, who, 1332 5, who,
1333 241, add_req->fed, 1333 241, add_req->fed,
1334 13, 2, 1334 13, 2,
1335 334, 0, 1335 334, 0,
1336 97, 1, 1336 97, 1, /* UTF-8 */
1337 14, encoded_msg ? encoded_msg : ""); 1337 14, encoded_msg ? encoded_msg : "");
1338 } 1338 }
1339 else { 1339 else {
1340 yahoo_packet_hash(pkt, "ssiiis", 1340 yahoo_packet_hash(pkt, "ssiiis",
1341 1, add_req->id, 1341 1, add_req->id,
1342 5, who, 1342 5, who,
1343 13, 2, 1343 13, 2,
1344 334, 0, 1344 334, 0,
1345 97, 1, 1345 97, 1, /* UTF-8 */
1346 14, encoded_msg ? encoded_msg : ""); 1346 14, encoded_msg ? encoded_msg : "");
1347 } 1347 }
1348 1348
1349 1349
1350 yahoo_packet_send_and_free(pkt, yd); 1350 yahoo_packet_send_and_free(pkt, yd);
4561 { 4561 {
4562 YahooData *yd = purple_connection_get_protocol_data(gc); 4562 YahooData *yd = purple_connection_get_protocol_data(gc);
4563 struct yahoo_packet *pkt = NULL; 4563 struct yahoo_packet *pkt = NULL;
4564 char *msg = yahoo_html_to_codes(what); 4564 char *msg = yahoo_html_to_codes(what);
4565 char *msg2; 4565 char *msg2;
4566 gboolean utf8 = TRUE;
4567 PurpleWhiteboard *wb; 4566 PurpleWhiteboard *wb;
4568 int ret = 1; 4567 int ret = 1;
4569 const char *fed_who; 4568 const char *fed_who;
4570 gsize lenb = 0; 4569 gsize lenb = 0;
4571 glong lenc = 0; 4570 glong lenc = 0;
4572 struct yahoo_p2p_data *p2p_data; 4571 struct yahoo_p2p_data *p2p_data;
4573 YahooFederation fed = YAHOO_FEDERATION_NONE; 4572 YahooFederation fed = YAHOO_FEDERATION_NONE;
4574 msg2 = yahoo_string_encode(gc, msg, &utf8); 4573 msg2 = yahoo_string_encode(gc, msg, TRUE);
4575 4574
4576 if(msg2) { 4575 if(msg2) {
4577 lenb = strlen(msg2); 4576 lenb = strlen(msg2);
4578 lenc = g_utf8_strlen(msg2, -1); 4577 lenc = g_utf8_strlen(msg2, -1);
4579 4578
4652 } 4651 }
4653 yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, fed_who); 4652 yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, fed_who);
4654 if (fed) 4653 if (fed)
4655 yahoo_packet_hash_int(pkt, 241, fed); 4654 yahoo_packet_hash_int(pkt, 241, fed);
4656 4655
4657 if (utf8) 4656 yahoo_packet_hash_str(pkt, 97, "1"); /* UTF-8 */
4658 yahoo_packet_hash_str(pkt, 97, "1");
4659 yahoo_packet_hash_str(pkt, 14, msg2); 4657 yahoo_packet_hash_str(pkt, 14, msg2);
4660 4658
4661 /* 4659 /*
4662 * IMVironment. 4660 * IMVironment.
4663 * 4661 *
4778 struct yahoo_packet *pkt; 4776 struct yahoo_packet *pkt;
4779 int old_status; 4777 int old_status;
4780 const char *msg = NULL; 4778 const char *msg = NULL;
4781 char *tmp = NULL; 4779 char *tmp = NULL;
4782 char *conv_msg = NULL; 4780 char *conv_msg = NULL;
4783 gboolean utf8 = TRUE;
4784 4781
4785 if (!purple_status_is_active(status)) 4782 if (!purple_status_is_active(status))
4786 return; 4783 return;
4787 4784
4788 gc = purple_account_get_connection(account); 4785 gc = purple_account_get_connection(account);
4795 if (yd->current_status == YAHOO_STATUS_CUSTOM) 4792 if (yd->current_status == YAHOO_STATUS_CUSTOM)
4796 { 4793 {
4797 msg = purple_status_get_attr_string(status, "message"); 4794 msg = purple_status_get_attr_string(status, "message");
4798 4795
4799 if (purple_status_is_available(status)) { 4796 if (purple_status_is_available(status)) {
4800 tmp = yahoo_string_encode(gc, msg, &utf8); 4797 tmp = yahoo_string_encode(gc, msg, TRUE);
4801 conv_msg = purple_markup_strip_html(tmp); 4798 conv_msg = purple_markup_strip_html(tmp);
4802 g_free(tmp); 4799 g_free(tmp);
4803 } else { 4800 } else {
4804 if ((msg == NULL) || (*msg == '\0')) 4801 if ((msg == NULL) || (*msg == '\0'))
4805 msg = _("Away"); 4802 msg = _("Away");
4806 tmp = yahoo_string_encode(gc, msg, &utf8); 4803 tmp = yahoo_string_encode(gc, msg, TRUE);
4807 conv_msg = purple_markup_strip_html(tmp); 4804 conv_msg = purple_markup_strip_html(tmp);
4808 g_free(tmp); 4805 g_free(tmp);
4809 } 4806 }
4810 } 4807 }
4811 4808
4819 4816
4820 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id); 4817 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id);
4821 yahoo_packet_hash_int(pkt, 10, yd->current_status); 4818 yahoo_packet_hash_int(pkt, 10, yd->current_status);
4822 4819
4823 if (yd->current_status == YAHOO_STATUS_CUSTOM) { 4820 if (yd->current_status == YAHOO_STATUS_CUSTOM) {
4824 yahoo_packet_hash_str(pkt, 97, utf8 ? "1" : 0); 4821 yahoo_packet_hash_str(pkt, 97, "1"); /* UTF-8 */
4825 yahoo_packet_hash_str(pkt, 19, conv_msg); 4822 yahoo_packet_hash_str(pkt, 19, conv_msg);
4826 } else { 4823 } else {
4827 yahoo_packet_hash_str(pkt, 19, ""); 4824 yahoo_packet_hash_str(pkt, 19, "");
4828 } 4825 }
4829 4826
4879 const char *tmp; 4876 const char *tmp;
4880 if (status == NULL) 4877 if (status == NULL)
4881 status = purple_presence_get_active_status(purple_account_get_presence(purple_connection_get_account(gc))); 4878 status = purple_presence_get_active_status(purple_account_get_presence(purple_connection_get_account(gc)));
4882 tmp = purple_status_get_attr_string(status, "message"); 4879 tmp = purple_status_get_attr_string(status, "message");
4883 if (tmp != NULL) { 4880 if (tmp != NULL) {
4884 gboolean utf8 = TRUE; 4881 msg = yahoo_string_encode(gc, tmp, TRUE);
4885 msg = yahoo_string_encode(gc, tmp, &utf8);
4886 msg2 = purple_markup_strip_html(msg); 4882 msg2 = purple_markup_strip_html(msg);
4887 yahoo_packet_hash_str(pkt, 97, utf8 ? "1" : 0); 4883 yahoo_packet_hash_str(pkt, 97, "1"); /* UTF-8 */
4888 yahoo_packet_hash_str(pkt, 19, msg2); 4884 yahoo_packet_hash_str(pkt, 19, msg2);
4889 } else { 4885 } else {
4890 /* get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for 4886 /* get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
4891 * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message */ 4887 * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message */
4892 yahoo_packet_hash_str(pkt, 19, _("Away")); 4888 yahoo_packet_hash_str(pkt, 19, _("Away"));
5028 if (g) 5024 if (g)
5029 group = purple_group_get_name(g); 5025 group = purple_group_get_name(g);
5030 else 5026 else
5031 group = "Buddies"; 5027 group = "Buddies";
5032 5028
5033 group2 = yahoo_string_encode(gc, group, NULL); 5029 group2 = yahoo_string_encode(gc, group, FALSE);
5034 pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id); 5030 pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id);
5035 if (fed) { 5031 if (fed) {
5036 yahoo_packet_hash(pkt, "sssssssisss", 5032 yahoo_packet_hash(pkt, "sssssssisss",
5037 14, "", 5033 14, "",
5038 65, group2, 5034 65, group2,
5039 97, "1", 5035 97, "1", /* UTF-8 */
5040 1, purple_connection_get_display_name(gc), 5036 1, purple_connection_get_display_name(gc),
5041 302, "319", 5037 302, "319",
5042 300, "319", 5038 300, "319",
5043 7, fed_bname, 5039 7, fed_bname,
5044 241, fed, 5040 241, fed,
5049 } 5045 }
5050 else { 5046 else {
5051 yahoo_packet_hash(pkt, "ssssssssss", 5047 yahoo_packet_hash(pkt, "ssssssssss",
5052 14, "", 5048 14, "",
5053 65, group2, 5049 65, group2,
5054 97, "1", 5050 97, "1", /* UTF-8 */
5055 1, purple_connection_get_display_name(gc), 5051 1, purple_connection_get_display_name(gc),
5056 302, "319", 5052 302, "319",
5057 300, "319", 5053 300, "319",
5058 7, fed_bname, 5054 7, fed_bname,
5059 334, "0", 5055 334, "0",
5099 if (remove) { 5095 if (remove) {
5100 g_hash_table_remove(yd->friends, bname); 5096 g_hash_table_remove(yd->friends, bname);
5101 f = NULL; /* f no longer valid - Just making it clear */ 5097 f = NULL; /* f no longer valid - Just making it clear */
5102 } 5098 }
5103 5099
5104 cg = yahoo_string_encode(gc, gname, NULL); 5100 cg = yahoo_string_encode(gc, gname, FALSE);
5105 pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id); 5101 pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id);
5106 5102
5107 switch (fed) { 5103 switch (fed) {
5108 case YAHOO_FEDERATION_MSN: 5104 case YAHOO_FEDERATION_MSN:
5109 case YAHOO_FEDERATION_OCS: 5105 case YAHOO_FEDERATION_OCS:
5214 5210
5215 /* If old and new are the same, we would probably 5211 /* If old and new are the same, we would probably
5216 * end up deleting the buddy, which would be bad. 5212 * end up deleting the buddy, which would be bad.
5217 * This might happen because of the charset conversation. 5213 * This might happen because of the charset conversation.
5218 */ 5214 */
5219 gpn = yahoo_string_encode(gc, new_group, NULL); 5215 gpn = yahoo_string_encode(gc, new_group, FALSE);
5220 gpo = yahoo_string_encode(gc, old_group, NULL); 5216 gpo = yahoo_string_encode(gc, old_group, FALSE);
5221 if (!strcmp(gpn, gpo)) { 5217 if (!strcmp(gpn, gpo)) {
5222 g_free(gpn); 5218 g_free(gpn);
5223 g_free(gpo); 5219 g_free(gpo);
5224 return; 5220 return;
5225 } 5221 }
5244 { 5240 {
5245 YahooData *yd = purple_connection_get_protocol_data(gc); 5241 YahooData *yd = purple_connection_get_protocol_data(gc);
5246 struct yahoo_packet *pkt; 5242 struct yahoo_packet *pkt;
5247 char *gpn, *gpo; 5243 char *gpn, *gpo;
5248 5244
5249 gpn = yahoo_string_encode(gc, purple_group_get_name(group), NULL); 5245 gpn = yahoo_string_encode(gc, purple_group_get_name(group), FALSE);
5250 gpo = yahoo_string_encode(gc, old_name, NULL); 5246 gpo = yahoo_string_encode(gc, old_name, FALSE);
5251 if (!strcmp(gpn, gpo)) { 5247 if (!strcmp(gpn, gpo)) {
5252 g_free(gpn); 5248 g_free(gpn);
5253 g_free(gpo); 5249 g_free(gpo);
5254 return; 5250 return;
5255 } 5251 }

mercurial