[gaim-migrate @ 4976]

Fri, 07 Mar 2003 18:20:47 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Fri, 07 Mar 2003 18:20:47 +0000
changeset 4665
d417f1b1a61b
parent 4664
1f5d72a07e64
child 4666
fd74a2faaf94

[gaim-migrate @ 4976]
This makes Japanese work perfectly for me between Gaim and ICQ 2003a. I
tried to figure out why ICQ Lite sucks so much, and from what I can tell,
it looks like the Japanese version of ICQ lite doesn't know how to send
messages in Japanese.

So if you need foreign language support with ICQ, make sure the person
you're talking to is using ICQ2003a. It should work.

src/protocols/oscar/oscar.c file | annotate | diff | comparison | revisions
--- a/src/protocols/oscar/oscar.c	Fri Mar 07 07:36:11 2003 +0000
+++ b/src/protocols/oscar/oscar.c	Fri Mar 07 18:20:47 2003 +0000
@@ -99,7 +99,8 @@
 /* static int caps_icq = AIM_CAPS_ICQ; */
 /* What does AIM_CAPS_ICQ actually mean? -SE */
 
-static fu8_t gaim_features[] = {0x01, 0x01, 0x01, 0x02};
+static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02};
+static fu8_t features_icq[] = {0x01, 0x06};
 
 struct oscar_data {
 	aim_session_t *sess;
@@ -3841,11 +3842,14 @@
 		int len;
 
 		args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
-		if (od->icq)
+		if (od->icq) {
+			args.features = features_icq;
+			args.featureslen = sizeof(features_icq);
 			args.flags |= AIM_IMFLAGS_OFFLINE;
-
-		args.features = gaim_features;
-		args.featureslen = sizeof(gaim_features);
+		} else {
+			args.features = features_aim;
+			args.featureslen = sizeof(features_aim);
+		}
 
 		while (h) {
 			ir = h->data;
@@ -3884,7 +3888,7 @@
 		if (args.flags & AIM_IMFLAGS_UNICODE) {
 			debug_printf("Sending Unicode IM\n");
 			args.charset = 0x0002;
-			args.charsubset = 0x0002;
+			args.charsubset = 0x0000;
 			args.msg = g_convert(message, len, "UCS-2BE", "UTF-8", NULL, &len, &err);
 			if (err) {
 				debug_printf("Error converting a unicode message: %s\n", err->message);
@@ -3895,7 +3899,7 @@
 		} else if (args.flags & AIM_IMFLAGS_ISO_8859_1) {
 			debug_printf("Sending ISO-8859-1 IM\n");
 			args.charset = 0x0003;
-			args.charsubset = 0x0003;
+			args.charsubset = 0x0000;
 			args.msg = g_convert(message, len, "ISO-8859-1", "UTF-8", NULL, &len, &err);
 			if (err) {
 				debug_printf("conversion error: %s\n", err->message);

mercurial