読者です 読者をやめる 読者になる 読者になる

Gaim v2.0.0bate3.1 で Yahoo! chat が使えない

[vine-users:078143] を先頭するスレッドの内容は,「Gaim v2.0.0bate3.1 で Yahoo! chat が使えない.」というものですが,2008/02/26 に Yahoo! がシステムメンテナンスをしたために,既存の Pidgin(旧 Gaim)で Yahoo! Messenger などに接続できないそうなんです.

Pidgin ではすでに対応パッチ*1が出ています.

--- libpurple/protocols/yahoo/util.c	6a72fcc2054413ee7791e5c5cc62b6b18f4bcce0
+++ libpurple/protocols/yahoo/util.c	2a3725bcc455684e1c1bb42bd4982cc322732f38
@@ -114,18 +114,15 @@ char *yahoo_string_encode(PurpleConnecti
 	char *ret;
 	const char *to_codeset;
 
-	if (yd->jp && utf8 && *utf8)
-		*utf8 = FALSE;
+	if (yd->jp)
+		return g_strdup(str);
 
 	if (utf8 && *utf8) /* FIXME: maybe don't use utf8 if it'll fit in latin1 */
 		return g_strdup(str);
 
-	if (yd->jp)
-		to_codeset = "SHIFT_JIS";
-	else
-		to_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset",  "ISO-8859-1");
+	to_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset",  "ISO-8859-1");
+	ret = g_convert_with_fallback(str, -1, to_codeset, "UTF-8", "?", NULL, NULL, NULL);
 
-	ret = g_convert_with_fallback(str, -1, to_codeset, "UTF-8", "?", NULL, NULL, NULL);
 	if (ret)
 		return ret;
 	else

Gaim ではどうするかということなんですが,スレッドの M.H さんが上記パッチに相応する Gaim 向けにパッチを添付して下さいました.

--- gaim-2.0.0beta3.1/src/protocols/yahoo/util.c.yahoojp_msgr	2008-03-02 10:23:25.000000000 +0900
+++ gaim-2.0.0beta3.1/src/protocols/yahoo/util.c	2008-03-02 10:28:14.000000000 +0900
@@ -52,16 +52,13 @@
 	int newlen;
 	const char *to_codeset;
 
-	if (yd->jp && utf8 && *utf8)
-		*utf8 = FALSE;
+	if (yd->jp)
+		return g_strdup(str);
 
 	if (utf8 && *utf8) /* FIXME: maybe don't use utf8 if it'll fit in latin1 */
 		return g_strdup(str);
 
-	if (yd->jp)
-		to_codeset = "SHIFT_JIS";
-	else
-		to_codeset = "ISO-8859-1";
+	to_codeset = "ISO-8859-1";
 
 	strtmp = sanitize_utf((char *)str, strlen((char *)str), &newlen);

確かに yahoojp_msgr.patch と同様な修正を施したパッチです.UTF8 を使うようになったということなんでしょうか?そこらへんは分かりません.