blob: 8c39a1e093d9e3b8853caa7f6f502e5e6f659bf0 [file] [log] [blame]
diff -Naur libtranslate-0.99.orig/src/modules/translate-generic-service.c libtranslate-0.99/src/modules/translate-generic-service.c
--- libtranslate-0.99.orig/src/modules/translate-generic-service.c 2005-01-17 17:46:38.000000000 +0100
+++ libtranslate-0.99/src/modules/translate-generic-service.c 2007-09-02 16:36:24.000000000 +0200
@@ -484,7 +484,7 @@
if (SOUP_STATUS_IS_SUCCESSFUL(message->status_code))
{
- const char *charset = NULL;
+ char *charset = NULL;
if (flags & TRANSFER_CONVERT)
{
@@ -493,14 +493,31 @@
content_type = translate_generic_service_get_header(message, &info, "Content-Type");
if (content_type)
{
- charset = translate_ascii_strcasestr(content_type, "charset=");
- if (charset)
- charset += 8;
+ const char *tmp;
+
+ tmp = translate_ascii_strcasestr(content_type, "charset=");
+ if (tmp)
+ {
+ int len;
+
+ tmp += 8;
+ if (*tmp == '\'' || *tmp == '"')
+ tmp++;
+
+ len = strlen(tmp);
+ if (len > 0 && (tmp[len - 1] == '\'' || tmp[len - 1] == '"'))
+ len--;
+
+ charset = g_strndup(tmp, len);
+ }
}
}
if (charset)
- response = g_convert(message->response.body, message->response.length, "UTF-8", charset, NULL, NULL, err);
+ {
+ response = g_convert(message->response.body, message->response.length, "UTF-8", charset, NULL, NULL, err);
+ g_free(charset);
+ }
else
{
if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(message->response.body, message->response.length, NULL))