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)