# HG changeset patch # User Stu Tomlinson # Date 1231290936 0 # Node ID 1300601041acd22cb8fdfee22951ce5a042d24cc # Parent 380e7149a777f1b3b2e6ea8e1935860a51ad7a9a g_strsplit_set is new in glib 2.4 g_strv_length is new in glib 2.6 This is one reason I didn't get around to making RPMs for 2.5.3, I don't (yet) know if there are other glib version dependencies to deal with... diff -r 380e7149a777 -r 1300601041ac libpurple/protocols/qq/im.c --- a/libpurple/protocols/qq/im.c Wed Jan 07 01:13:27 2009 +0000 +++ b/libpurple/protocols/qq/im.c Wed Jan 07 01:15:36 2009 +0000 @@ -467,7 +467,10 @@ /* qq_show_packet("text", (guint8 *)text, strlen(text)); */ g_return_val_if_fail(text != NULL && strlen(text) != 0, g_strdup("")); - segments = g_strsplit_set(text, "\x14\x15", 0); + while ((cur = strchr(text, '\x14')) != NULL) + *cur = '\x15'; + + segments = g_strsplit(text, "\x15", 0); if(segments == NULL) { return g_strdup(""); } diff -r 380e7149a777 -r 1300601041ac libpurple/protocols/qq/qq_network.c --- a/libpurple/protocols/qq/qq_network.c Wed Jan 07 01:13:27 2009 +0000 +++ b/libpurple/protocols/qq/qq_network.c Wed Jan 07 01:15:36 2009 +0000 @@ -214,7 +214,7 @@ qd->connect_retry = QQ_CONNECT_MAX; } - segments = g_strsplit_set(qd->curr_server, ":", 0); + segments = g_strsplit(qd->curr_server, ":", 0); tmp_server = g_strdup(segments[0]); if (NULL != segments[1]) { port = atoi(segments[1]); diff -r 380e7149a777 -r 1300601041ac libpurple/protocols/qq/qq_process.c --- a/libpurple/protocols/qq/qq_process.c Wed Jan 07 01:13:27 2009 +0000 +++ b/libpurple/protocols/qq/qq_process.c Wed Jan 07 01:15:36 2009 +0000 @@ -435,8 +435,8 @@ static void process_server_msg(PurpleConnection *gc, guint8 *data, gint data_len, guint16 seq) { qq_data *qd; - guint8 *data_str; - gchar **segments; + guint8 *data_str, i = 0; + gchar **segments, **seg; gchar *funct_str, *from, *to; gint bytes, funct; @@ -448,9 +448,11 @@ g_memmove(data_str, data, data_len); data_str[data_len] = 0x00; - segments = g_strsplit_set((gchar *) data_str, "\x1f", 0); + segments = g_strsplit((gchar *) data_str, "\x1f", 0); g_return_if_fail(segments != NULL); - if (g_strv_length(segments) < 3) { + for (seg = segments; *seg != NULL; seg++) + i++; + if (i < 3) { purple_debug_warning("QQ", "Server message segments is less than 3\n"); g_strfreev(segments); return; diff -r 380e7149a777 -r 1300601041ac libpurple/protocols/qq/utils.c --- a/libpurple/protocols/qq/utils.c Wed Jan 07 01:13:27 2009 +0000 +++ b/libpurple/protocols/qq/utils.c Wed Jan 07 01:15:36 2009 +0000 @@ -95,8 +95,8 @@ gchar **split_data(guint8 *data, gint len, const gchar *delimit, gint expected_fields) { guint8 *input; - gchar **segments; - gint count, j; + gchar **segments, **seg; + gint count = 0, j; g_return_val_if_fail(data != NULL && len != 0 && delimit != 0, NULL); @@ -106,11 +106,12 @@ g_memmove(input, data, len); input[len] = 0x00; - segments = g_strsplit_set((gchar *) input, delimit, 0); + segments = g_strsplit((gchar *) input, delimit, 0); if (expected_fields <= 0) return segments; - count = g_strv_length(segments); + for (seg = segments; *seg != NULL; seg++) + count++; if (count < expected_fields) { /* not enough fields */ purple_debug_error("QQ", "Less fields %d then %d\n", count, expected_fields); return NULL;