# HG changeset patch # User Luke Schierer # Date 1078772777 0 # Node ID 3c07b7d0084c43394f08928dc23829eccc2796ed # Parent 6f30052c31dc897118743d474b895ab9e01efaa5 [gaim-migrate @ 9140] quoth marv: " This makes joining those chats with the arabic script in their names actually work, and lets you see people typing in arabic in UTF-8, instead of parsing it as ISO-8859-1. It probably fixes similiar problems with other languages, but the arabic text standed out the most in the room list. It's pretty simple, and doesn't change any strings. It's against yahoochat.c, you'll probably have to patch the file specificly since I diffed it specificly. If you need an example to test again, look through the room list. That's how I noticed this didn't already work." committer: Tailor Script diff -r 6f30052c31dc -r 3c07b7d0084c src/protocols/yahoo/yahoochat.c --- a/src/protocols/yahoo/yahoochat.c Mon Mar 08 17:57:32 2004 +0000 +++ b/src/protocols/yahoo/yahoochat.c Mon Mar 08 19:06:17 2004 +0000 @@ -357,10 +357,10 @@ switch (pair->key) { case 104: - room = yahoo_string_decode(gc, pair->value, FALSE); + room = yahoo_string_decode(gc, pair->value, TRUE); break; case 105: - topic = yahoo_string_decode(gc, pair->value, FALSE); + topic = yahoo_string_decode(gc, pair->value, TRUE); break; case 128: someid = pair->value; @@ -457,7 +457,7 @@ struct yahoo_pair *pair = l->data; if (pair->key == 104) - room = yahoo_string_decode(gc, pair->value, FALSE); + room = yahoo_string_decode(gc, pair->value, TRUE); if (pair->key == 109) who = pair->value; } @@ -476,7 +476,7 @@ void yahoo_process_chat_message(GaimConnection *gc, struct yahoo_packet *pkt) { char *room = NULL, *who = NULL, *msg = NULL, *msg2; - int msgtype = 1, utf8 = 0; + int msgtype = 1, utf8 = 1; /* default to utf8 */ GaimConversation *c = NULL; GSList *l; @@ -489,7 +489,7 @@ utf8 = strtol(pair->value, NULL, 10); break; case 104: - room = yahoo_string_decode(gc, pair->value, FALSE); + room = yahoo_string_decode(gc, pair->value, TRUE); break; case 109: who = pair->value; @@ -544,7 +544,7 @@ switch (pair->key) { case 104: - room = yahoo_string_decode(gc, pair->value, FALSE); + room = yahoo_string_decode(gc, pair->value, TRUE); break; case 129: /* room id? */ break; @@ -714,8 +714,9 @@ struct yahoo_packet *pkt; GaimConversation *c; char *eroom; + gboolean utf8 = 1; - eroom = yahoo_string_encode(gc, room, NULL); + eroom = yahoo_string_encode(gc, room, &utf8); pkt = yahoo_packet_new(YAHOO_SERVICE_CHATEXIT, YAHOO_STATUS_AVAILABLE, 0); @@ -834,8 +835,11 @@ struct yahoo_data *yd = gc->proto_data; struct yahoo_packet *pkt; char *room2; + gboolean utf8 = TRUE; - room2 = yahoo_string_encode(gc, room, NULL); + /* apparently room names are always utf8, or else always not utf8, + * so we don't have to actually pass the flag in the packet. Or something. */ + room2 = yahoo_string_encode(gc, room, &utf8); pkt = yahoo_packet_new(YAHOO_SERVICE_CHATJOIN, YAHOO_STATUS_AVAILABLE, 0); @@ -856,8 +860,9 @@ struct yahoo_data *yd = gc->proto_data; struct yahoo_packet *pkt; char *room2, *msg2 = NULL; + gboolean utf8 = TRUE; - room2 = yahoo_string_encode(gc, room, NULL); + room2 = yahoo_string_encode(gc, room, &utf8); if (msg) msg2 = yahoo_string_encode(gc, msg, NULL); pkt = yahoo_packet_new(YAHOO_SERVICE_CHATADDINVITE, YAHOO_STATUS_AVAILABLE, 0);