Mercurial > pidgin.yaz
comparison libpurple/protocols/qq/char_conv.c @ 24071:619ac2303c46
2009.10.02 - ccpaging <ccpaging(at)gmail.com>
* Added 'Captcha Display' function
* Most functions from patch written by Emil Alexiev merged into trunk,
except 'buddy operations'
* 'online buddy status' and 'qun buddies' still have problems
author | SHiNE CsyFeK <csyfek@gmail.com> |
---|---|
date | Wed, 22 Oct 2008 14:43:46 +0000 |
parents | bcfc98c7a55f |
children | df699d739b8f |
comparison
equal
deleted
inserted
replaced
24070:832178d951ca | 24071:619ac2303c46 |
---|---|
139 | 139 |
140 return len + 1; | 140 return len + 1; |
141 } | 141 } |
142 | 142 |
143 /* convert QQ formatted msg to Purple formatted msg (and UTF-8) */ | 143 /* convert QQ formatted msg to Purple formatted msg (and UTF-8) */ |
144 gchar *qq_encode_to_purple(guint8 *data, gint len, const gchar *msg) | 144 gchar *qq_encode_to_purple(guint8 *data, gint len, const gchar *msg, const gint client_version) |
145 { | 145 { |
146 GString *encoded; | 146 GString *encoded; |
147 guint8 font_attr, font_size, color[3], bar; | 147 guint8 font_attr, font_size, color[3], bar; |
148 gboolean is_bold, is_italic, is_underline; | 148 gboolean is_bold, is_italic, is_underline; |
149 guint16 charset_code; | 149 guint16 charset_code; |
151 gint bytes = 0; | 151 gint bytes = 0; |
152 | 152 |
153 /* checked qq_show_packet OK */ | 153 /* checked qq_show_packet OK */ |
154 /* qq_show_packet("QQ_MESG recv for font style", data, len); */ | 154 /* qq_show_packet("QQ_MESG recv for font style", data, len); */ |
155 | 155 |
156 if (client_version >= 2007) { | |
157 bytes += 1; | |
158 } | |
156 bytes += qq_get8(&font_attr, data + bytes); | 159 bytes += qq_get8(&font_attr, data + bytes); |
157 bytes += qq_getdata(color, 3, data + bytes); /* red,green,blue */ | 160 bytes += qq_getdata(color, 3, data + bytes); /* red,green,blue */ |
158 color_code = g_strdup_printf("#%02x%02x%02x", color[0], color[1], color[2]); | 161 color_code = g_strdup_printf("#%02x%02x%02x", color[0], color[1], color[2]); |
159 | 162 |
160 bytes += qq_get8(&bar, data + bytes); /* skip, not sure of its use */ | 163 bytes += qq_get8(&bar, data + bytes); /* skip, not sure of its use */ |
230 gchar qq_smiley, *cur_seg, **segments, *ret; | 233 gchar qq_smiley, *cur_seg, **segments, *ret; |
231 GString *converted; | 234 GString *converted; |
232 | 235 |
233 converted = g_string_new(""); | 236 converted = g_string_new(""); |
234 segments = split_data((guint8 *) text, strlen(text), "\x14\x15", 0); | 237 segments = split_data((guint8 *) text, strlen(text), "\x14\x15", 0); |
238 if(segments == NULL) | |
239 return NULL; | |
240 | |
235 g_string_append(converted, segments[0]); | 241 g_string_append(converted, segments[0]); |
236 | |
237 while ((*(++segments)) != NULL) { | 242 while ((*(++segments)) != NULL) { |
238 cur_seg = *segments; | 243 cur_seg = *segments; |
239 qq_smiley = cur_seg[0]; | 244 qq_smiley = cur_seg[0]; |
240 for (index = 0; index < QQ_SMILEY_AMOUNT; index++) { | 245 for (index = 0; index < QQ_SMILEY_AMOUNT; index++) { |
241 if (qq_smiley_map[index] == qq_smiley) | 246 if (qq_smiley_map[index] == qq_smiley) |