aboutsummaryrefslogtreecommitdiff
path: root/textproc/libtranslate
diff options
context:
space:
mode:
authorJean-Yves Lefort <jylefort@FreeBSD.org>2005-04-13 21:19:02 +0000
committerJean-Yves Lefort <jylefort@FreeBSD.org>2005-04-13 21:19:02 +0000
commitcdd8a1f9d099e350513637b603fe635fb796bd9b (patch)
treebe86c5be8efcfbd55f51e98f932db97ae7f2c5b9 /textproc/libtranslate
parentf65c7a78d8bb54ea0fb48189f8665d71a87715b2 (diff)
downloadports-cdd8a1f9d099e350513637b603fe635fb796bd9b.tar.gz
ports-cdd8a1f9d099e350513637b603fe635fb796bd9b.zip
* Fixes HTTP charset parsing.
* Fixes an occasional lockup in translate_session_translate_text(). Approved by: adamw (mentor)
Notes
Notes: svn path=/head/; revision=133274
Diffstat (limited to 'textproc/libtranslate')
-rw-r--r--textproc/libtranslate/Makefile2
-rw-r--r--textproc/libtranslate/files/patch-src_modules_translate-generic-service.c47
-rw-r--r--textproc/libtranslate/files/patch-src_translate-session.c38
3 files changed, 86 insertions, 1 deletions
diff --git a/textproc/libtranslate/Makefile b/textproc/libtranslate/Makefile
index 06ab6d0af356..11b87f98f57a 100644
--- a/textproc/libtranslate/Makefile
+++ b/textproc/libtranslate/Makefile
@@ -7,7 +7,7 @@
PORTNAME= libtranslate
PORTVERSION= 0.99
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= textproc
MASTER_SITES= ${MASTER_SITE_SAVANNAH}
MASTER_SITE_SUBDIR= ${PORTNAME}
diff --git a/textproc/libtranslate/files/patch-src_modules_translate-generic-service.c b/textproc/libtranslate/files/patch-src_modules_translate-generic-service.c
new file mode 100644
index 000000000000..1626f25ff71f
--- /dev/null
+++ b/textproc/libtranslate/files/patch-src_modules_translate-generic-service.c
@@ -0,0 +1,47 @@
+--- src/modules/translate-generic-service.c.orig Mon Apr 11 23:08:47 2005
++++ src/modules/translate-generic-service.c Mon Apr 11 23:15:54 2005
+@@ -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))
diff --git a/textproc/libtranslate/files/patch-src_translate-session.c b/textproc/libtranslate/files/patch-src_translate-session.c
new file mode 100644
index 000000000000..4011dcd7d5c1
--- /dev/null
+++ b/textproc/libtranslate/files/patch-src_translate-session.c
@@ -0,0 +1,38 @@
+--- src/translate-session.c.orig Mon Apr 11 22:44:53 2005
++++ src/translate-session.c Mon Apr 11 22:51:48 2005
+@@ -703,7 +703,14 @@
+ GError *tmp_err = NULL;
+
+ g_mutex_lock(info->mutex);
+- ret = info->err != NULL;
++ if (info->err)
++ {
++ ret = TRUE;
++ if (info->progress_cond)
++ g_cond_signal(info->progress_cond);
++ }
++ else
++ ret = FALSE;
+ g_mutex_unlock(info->mutex);
+
+ if (ret)
+@@ -728,6 +735,9 @@
+ else
+ g_propagate_error(&info->err, tmp_err);
+
++ if (info->progress_cond)
++ g_cond_signal(info->progress_cond);
++
+ g_mutex_unlock(info->mutex);
+
+ return;
+@@ -759,6 +769,9 @@
+ info->err = g_error_new(TRANSLATE_SESSION_ERROR,
+ TRANSLATE_SESSION_ERROR_NO_SERVICE,
+ _("no service could translate chunk"));
++
++ if (info->progress_cond)
++ g_cond_signal(info->progress_cond);
+ }
+
+ g_mutex_unlock(info->mutex);