Mercurial > pidgin
comparison libpurple/protocols/qq/char_conv.c @ 24093:22745e6a3136
disapproval of revision '5316525f53e27f838d18a6a08b82c7d55f674591'
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Mon, 15 Sep 2008 03:03:33 +0000 |
parents | d4e0b7c484b1 |
children | 225e0e9e1055 |
comparison
equal
deleted
inserted
replaced
24092:d4e0b7c484b1 | 24093:22745e6a3136 |
---|---|
96 { | 96 { |
97 return (font_attr & 0x80) ? TRUE : FALSE; | 97 return (font_attr & 0x80) ? TRUE : FALSE; |
98 } | 98 } |
99 | 99 |
100 /* convert a string from from_charset to to_charset, using g_convert */ | 100 /* convert a string from from_charset to to_charset, using g_convert */ |
101 static gchar *_my_convert(const gchar *str, gssize len, const gchar *to_charset, const gchar *from_charset) | 101 static gchar *_my_convert(const gchar *str, gssize len, const gchar *to_charset, const gchar *from_charset) |
102 { | 102 { |
103 GError *error = NULL; | 103 GError *error = NULL; |
104 gchar *ret; | 104 gchar *ret; |
105 gsize byte_read, byte_write; | 105 gsize byte_read, byte_write; |
106 | 106 |
109 ret = g_convert(str, len, to_charset, from_charset, &byte_read, &byte_write, &error); | 109 ret = g_convert(str, len, to_charset, from_charset, &byte_read, &byte_write, &error); |
110 | 110 |
111 if (error == NULL) { | 111 if (error == NULL) { |
112 return ret; /* conversion is OK */ | 112 return ret; /* conversion is OK */ |
113 } | 113 } |
114 | 114 |
115 /* conversion error */ | 115 /* conversion error */ |
116 purple_debug_error("QQ_CONVERT", "%s\n", error->message); | 116 purple_debug_error("QQ_CONVERT", "%s\n", error->message); |
117 | 117 |
118 qq_hex_dump(PURPLE_DEBUG_WARNING, "QQ_CONVERT", | 118 qq_hex_dump(PURPLE_DEBUG_WARNING, "QQ_CONVERT", |
119 (guint8 *) str, (len == -1) ? strlen(str) : len, | 119 (guint8 *) str, (len == -1) ? strlen(str) : len, |
125 | 125 |
126 /* | 126 /* |
127 * take the input as a pascal string and return a converted c-string in UTF-8 | 127 * take the input as a pascal string and return a converted c-string in UTF-8 |
128 * returns the number of bytes read, return -1 if fatal error | 128 * returns the number of bytes read, return -1 if fatal error |
129 * the converted UTF-8 will be saved in ret | 129 * the converted UTF-8 will be saved in ret |
130 */ | 130 */ |
131 gint convert_as_pascal_string(guint8 *data, gchar **ret, const gchar *from_charset) | 131 gint convert_as_pascal_string(guint8 *data, gchar **ret, const gchar *from_charset) |
132 { | 132 { |
133 guint8 len; | 133 guint8 len; |
134 | 134 |
135 g_return_val_if_fail(data != NULL && from_charset != NULL, -1); | 135 g_return_val_if_fail(data != NULL && from_charset != NULL, -1); |
136 | 136 |
220 gchar *qq_to_utf8(const gchar *str, const gchar *from_charset) | 220 gchar *qq_to_utf8(const gchar *str, const gchar *from_charset) |
221 { | 221 { |
222 return _my_convert(str, -1, UTF8, from_charset); | 222 return _my_convert(str, -1, UTF8, from_charset); |
223 } | 223 } |
224 | 224 |
225 /* QQ uses binary code for smiley, while purple uses strings. | 225 /* QQ uses binary code for smiley, while purple uses strings. |
226 * There is a mapping relation between these two. */ | 226 * There is a mapping relation between these two. */ |
227 gchar *qq_smiley_to_purple(gchar *text) | 227 gchar *qq_smiley_to_purple(gchar *text) |
228 { | 228 { |
229 gint index; | 229 gint index; |
230 gchar qq_smiley, *cur_seg, **segments, *ret; | 230 gchar qq_smiley, *cur_seg, **segments, *ret; |
284 if (str == NULL) { | 284 if (str == NULL) { |
285 return; | 285 return; |
286 } | 286 } |
287 | 287 |
288 for (temp = str; *temp != 0; temp++) { | 288 for (temp = str; *temp != 0; temp++) { |
289 /*if (*temp == '\r' || *temp == '\n') *temp = ' ';*/ | 289 if (*temp == '\r' || *temp == '\n') *temp = ' '; |
290 if (*temp > 0 && *temp < 0x20) *temp = ' '; | |
291 } | 290 } |
292 g_strstrip(str); | 291 g_strstrip(str); |
293 } | 292 } |
294 | 293 |
295 | 294 |