diff libpurple/protocols/qq/qq_process.c @ 24095:2a19984c0005

2008.10.27 - ccpaging <ccpaging(at)gmail.com> * Update 'buddy_adding' protocol
author SHiNE CsyFeK <csyfek@gmail.com>
date Tue, 28 Oct 2008 16:47:06 +0000
parents 7f5433ffbf8d
children 75545fdf8944 2457411cc613
line wrap: on
line diff
--- a/libpurple/protocols/qq/qq_process.c	Tue Oct 28 16:46:08 2008 +0000
+++ b/libpurple/protocols/qq/qq_process.c	Tue Oct 28 16:47:06 2008 +0000
@@ -98,49 +98,30 @@
 {
 	qq_data *qd = (qq_data *) gc->proto_data;
 	gint bytes;
-	guint8 *temp;
-	guint8 temp_len;
 	gchar *title, *brief, *url;
-	gchar *title_utf8;
-	gchar *content, *content_utf8;
+	gchar *content;
 
 	g_return_if_fail(data != NULL && data_len != 0);
 
 	/* qq_show_packet("Rcv news", data, data_len); */
 
-	temp = g_newa(guint8, data_len);
-	bytes = 4;	/* ignore unknown 4 bytes */
-
-	bytes += qq_get8(&temp_len, data + bytes);
-	g_return_if_fail(bytes + temp_len <= data_len);
-	bytes += qq_getdata(temp, temp_len, data+bytes);
-	title = g_strndup((gchar *)temp, temp_len);
+	bytes = 4;	/* skip unknown 4 bytes */
 
-	bytes += qq_get8(&temp_len, data + bytes);
-	g_return_if_fail(bytes + temp_len <= data_len);
-	bytes += qq_getdata(temp, temp_len, data+bytes);
-	brief = g_strndup((gchar *)temp, temp_len);
+	bytes += qq_get_vstr(&title, QQ_CHARSET_DEFAULT, data + bytes);
+	bytes += qq_get_vstr(&brief, QQ_CHARSET_DEFAULT, data + bytes);
+	bytes += qq_get_vstr(&url, QQ_CHARSET_DEFAULT, data + bytes);
 
-	bytes += qq_get8(&temp_len, data + bytes);
-	g_return_if_fail(bytes + temp_len <= data_len);
-	bytes += qq_getdata(temp, temp_len, data+bytes);
-	url = g_strndup((gchar *)temp, temp_len);
-
-	title_utf8 = qq_to_utf8(title, QQ_CHARSET_DEFAULT);
 	content = g_strdup_printf(_("Server News:\n%s\n%s\n%s"), title, brief, url);
-	content_utf8 = qq_to_utf8(content, QQ_CHARSET_DEFAULT);
 
 	if (qd->is_show_news) {
-		qq_got_attention(gc, content_utf8);
+		qq_got_attention(gc, content);
 	} else {
-		purple_debug_info("QQ", "QQ Server news:\n%s\n%s", title_utf8, content_utf8);
+		purple_debug_info("QQ", "QQ Server news:\n%s\n", content);
 	}
 	g_free(title);
-	g_free(title_utf8);
 	g_free(brief);
 	g_free(url);
 	g_free(content);
-	g_free(content_utf8);
 }
 
 static void do_msg_sys_30(PurpleConnection *gc, guint8 *data, gint data_len)
@@ -1099,12 +1080,18 @@
 			}
 			purple_debug_info("QQ", "All buddies and groups received\n");
 			break;
-		case QQ_CMD_AUTH_INFO:
-			qq_process_auth_info(gc, data, data_len, ship32);
+		case QQ_CMD_AUTH_CODE:
+			qq_process_auth_code(gc, data, data_len, ship32);
+			break;
+		case QQ_CMD_BUDDY_QUESTION:
+			qq_process_question(gc, data, data_len, ship32);
 			break;
 		case QQ_CMD_ADD_BUDDY_NO_AUTH_EX:
 			qq_process_add_buddy_no_auth_ex(gc, data, data_len, ship32);
 			break;
+		case QQ_CMD_ADD_BUDDY_AUTH_EX:
+			qq_process_add_buddy_auth_ex(gc, data, data_len, ship32);
+			break;
 		case QQ_CMD_BUDDY_CHECK_CODE:
 			qq_process_buddy_check_code(gc, data, data_len);
 			break;