| 251 static char *irc_recv_convert(struct irc_conn *irc, const char *string) |
251 static char *irc_recv_convert(struct irc_conn *irc, const char *string) |
| 252 { |
252 { |
| 253 char *utf8 = NULL; |
253 char *utf8 = NULL; |
| 254 const gchar *charset, *enclist; |
254 const gchar *charset, *enclist; |
| 255 gchar **encodings; |
255 gchar **encodings; |
| |
256 gboolean autodetect; |
| 256 int i; |
257 int i; |
| 257 |
258 |
| 258 enclist = purple_account_get_string(irc->account, "encoding", IRC_DEFAULT_CHARSET); |
259 enclist = purple_account_get_string(irc->account, "encoding", IRC_DEFAULT_CHARSET); |
| 259 encodings = g_strsplit(enclist, ",", -1); |
260 encodings = g_strsplit(enclist, ",", -1); |
| 260 |
261 |
| 261 if (encodings[0] == NULL) { |
262 if (encodings[0] == NULL) { |
| 262 g_strfreev(encodings); |
263 g_strfreev(encodings); |
| 263 return purple_utf8_salvage(string); |
264 return purple_utf8_salvage(string); |
| |
265 } |
| |
266 |
| |
267 autodetect = purple_account_get_bool(irc->account, "autodetect_utf8", IRC_DEFAULT_AUTODETECT); |
| |
268 |
| |
269 if (autodetect && g_utf8_validate(string, -1, NULL)) { |
| |
270 return g_strdup(string); |
| 264 } |
271 } |
| 265 |
272 |
| 266 for (i = 0; encodings[i] != NULL; i++) { |
273 for (i = 0; encodings[i] != NULL; i++) { |
| 267 charset = encodings[i]; |
274 charset = encodings[i]; |
| 268 while (*charset == ' ') |
275 while (*charset == ' ') |