SecBSD's official ports repository
This commit is contained in:
commit
2c0afcbbf3
64331 changed files with 5339189 additions and 0 deletions
|
@ -0,0 +1,361 @@
|
|||
upstream patch
|
||||
|
||||
--- src/modules/translate-generic-service.c.orig Mon Nov 14 16:06:02 2011
|
||||
+++ src/modules/translate-generic-service.c Mon Nov 14 16:06:28 2011
|
||||
@@ -35,7 +35,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <glib/gi18n-lib.h>
|
||||
#include <libsoup/soup.h>
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
#include <libsoup/soup-message-filter.h>
|
||||
+#endif
|
||||
#include <libxml/HTMLparser.h>
|
||||
#include "translate.h"
|
||||
#include "translate-generic-service.h"
|
||||
@@ -43,6 +45,17 @@
|
||||
#include "translate-generic-parser.h"
|
||||
#include "translate-generic-soup-cookie-jar.h"
|
||||
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
+#define soup_message_headers_get soup_message_get_header
|
||||
+#define soup_message_headers_append soup_message_add_header
|
||||
+#define SoupURI SoupUri
|
||||
+#define SOUP_MESSAGE_RESPONSE_BODY(msg) ((msg)->response.body)
|
||||
+#define SOUP_MESSAGE_RESPONSE_LENGTH(msg) ((msg)->response.length)
|
||||
+#else
|
||||
+#define SOUP_MESSAGE_RESPONSE_BODY(msg) ((msg)->response_body->data)
|
||||
+#define SOUP_MESSAGE_RESPONSE_LENGTH(msg) ((msg)->response_body->length)
|
||||
+#endif
|
||||
+
|
||||
#define MAKE_WARNING_PREFIX(service, group_pos, attribute, element) \
|
||||
g_strdup_printf(_("in %s, group %i, \"%s\" attribute of \"%s\" element"), \
|
||||
translate_service_get_name((service)), \
|
||||
@@ -140,6 +153,7 @@ static const char *translate_generic_service_get_heade
|
||||
const char *name);
|
||||
|
||||
static void translate_generic_service_log_connect (SoupMessage *message);
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
static void translate_generic_service_log_wrote_headers_h (SoupMessage *message,
|
||||
gpointer user_data);
|
||||
static void translate_generic_service_log_wrote_body_h (SoupMessage *message,
|
||||
@@ -151,10 +165,20 @@ static void translate_generic_service_log_got_body_h (
|
||||
static void translate_generic_service_log_headers_cb (const char *key,
|
||||
const char *value,
|
||||
gpointer user_data);
|
||||
+#else
|
||||
+static void translate_generic_service_log_printer (SoupLogger *logger,
|
||||
+ SoupLoggerLogLevel level,
|
||||
+ char direction,
|
||||
+ const char *data,
|
||||
+ gpointer user_data);
|
||||
+#endif
|
||||
|
||||
static void translate_generic_service_progress_got_headers_h (SoupMessage *message,
|
||||
gpointer user_data);
|
||||
static void translate_generic_service_progress_got_chunk_h (SoupMessage *message,
|
||||
+#ifdef HAVE_LIBSOUP24
|
||||
+ SoupBuffer *chunk,
|
||||
+#endif
|
||||
gpointer user_data);
|
||||
|
||||
static void translate_generic_service_html_got_headers_h (SoupMessage *message,
|
||||
@@ -170,8 +194,10 @@ static void translate_generic_service_html_end_element
|
||||
static void translate_generic_service_refresh_got_body_h (SoupMessage *message,
|
||||
gpointer user_data);
|
||||
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
static void translate_generic_service_redirect_handler (SoupMessage *message,
|
||||
gpointer user_data);
|
||||
+#endif
|
||||
|
||||
static char *translate_generic_service_translate_text (TranslateService *service,
|
||||
const char *text,
|
||||
@@ -419,7 +445,11 @@ translate_generic_service_get (const char *uri,
|
||||
g_return_val_if_fail(post_content_type != NULL, NULL);
|
||||
soup_message_set_request(message,
|
||||
post_content_type,
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
SOUP_BUFFER_USER_OWNED,
|
||||
+#else
|
||||
+ SOUP_MEMORY_TEMPORARY,
|
||||
+#endif
|
||||
(char *) post,
|
||||
strlen(post));
|
||||
}
|
||||
@@ -427,7 +457,7 @@ translate_generic_service_get (const char *uri,
|
||||
for (l = headers; l != NULL; l = l->next)
|
||||
{
|
||||
TranslateGenericHttpHeader *header = l->data;
|
||||
- soup_message_add_header(message->request_headers, header->name, header->value);
|
||||
+ soup_message_headers_append(message->request_headers, header->name, header->value);
|
||||
}
|
||||
|
||||
info.session = translate_generic_service_soup_session_sync_new();
|
||||
@@ -435,12 +465,21 @@ translate_generic_service_get (const char *uri,
|
||||
info.html_http_equiv = NULL;
|
||||
|
||||
if (translate_generic_debug_flags & TRANSLATE_GENERIC_DEBUG_LOG_TRANSFERS)
|
||||
- g_object_connect(message,
|
||||
- "signal::wrote-headers", translate_generic_service_log_wrote_headers_h, &info,
|
||||
- "signal::wrote-body", translate_generic_service_log_wrote_body_h, &info,
|
||||
- "signal::got-headers", translate_generic_service_log_got_headers_h, &info,
|
||||
- "signal::got-body", translate_generic_service_log_got_body_h, &info,
|
||||
- NULL);
|
||||
+ {
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
+ g_object_connect(message,
|
||||
+ "signal::wrote-headers", translate_generic_service_log_wrote_headers_h, &info,
|
||||
+ "signal::wrote-body", translate_generic_service_log_wrote_body_h, &info,
|
||||
+ "signal::got-headers", translate_generic_service_log_got_headers_h, &info,
|
||||
+ "signal::got-body", translate_generic_service_log_got_body_h, &info,
|
||||
+ NULL);
|
||||
+#else
|
||||
+ SoupLogger *logger = soup_logger_new (SOUP_LOGGER_LOG_BODY, -1);
|
||||
+ soup_logger_set_printer (logger, translate_generic_service_log_printer, NULL, NULL);
|
||||
+ soup_logger_attach (logger, info.session);
|
||||
+ g_object_unref (logger);
|
||||
+#endif
|
||||
+ }
|
||||
|
||||
if (progress_func)
|
||||
{
|
||||
@@ -468,6 +507,7 @@ translate_generic_service_get (const char *uri,
|
||||
if (flags & TRANSFER_FOLLOW_REFRESH)
|
||||
g_signal_connect(message, "got-body", G_CALLBACK(translate_generic_service_refresh_got_body_h), &info);
|
||||
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
/* http://bugzilla.ximian.com/show_bug.cgi?id=70688 */
|
||||
soup_message_set_flags(message, SOUP_MESSAGE_NO_REDIRECT);
|
||||
soup_message_add_status_class_handler(message,
|
||||
@@ -475,6 +515,7 @@ translate_generic_service_get (const char *uri,
|
||||
SOUP_HANDLER_POST_BODY,
|
||||
translate_generic_service_redirect_handler,
|
||||
info.session);
|
||||
+#endif
|
||||
|
||||
if (translate_generic_debug_flags & TRANSLATE_GENERIC_DEBUG_LOG_TRANSFERS)
|
||||
translate_generic_service_log_connect(message);
|
||||
@@ -484,7 +525,7 @@ translate_generic_service_get (const char *uri,
|
||||
|
||||
if (SOUP_STATUS_IS_SUCCESSFUL(message->status_code))
|
||||
{
|
||||
- const char *charset = NULL;
|
||||
+ char *charset = NULL;
|
||||
|
||||
if (flags & TRANSFER_CONVERT)
|
||||
{
|
||||
@@ -493,23 +534,40 @@ translate_generic_service_get (const char *uri,
|
||||
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(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message), "UTF-8", charset, NULL, NULL, err);
|
||||
+ g_free(charset);
|
||||
+ }
|
||||
else
|
||||
{
|
||||
- if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(message->response.body, message->response.length, NULL))
|
||||
+ if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message), NULL))
|
||||
g_set_error(err,
|
||||
TRANSLATE_GENERIC_SERVICE_ERROR,
|
||||
TRANSLATE_GENERIC_SERVICE_ERROR_TRANSFER,
|
||||
_("invalid UTF-8"));
|
||||
else
|
||||
- response = g_strndup(message->response.body, message->response.length);
|
||||
+ response = g_strndup(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -550,7 +608,7 @@ translate_generic_service_get_header (SoupMessage *mes
|
||||
: NULL;
|
||||
|
||||
if (! value)
|
||||
- value = soup_message_get_header(message->response_headers, name);
|
||||
+ value = soup_message_headers_get(message->response_headers, name);
|
||||
|
||||
return value;
|
||||
}
|
||||
@@ -558,12 +616,14 @@ translate_generic_service_get_header (SoupMessage *mes
|
||||
static void
|
||||
translate_generic_service_log_connect (SoupMessage *message)
|
||||
{
|
||||
- const SoupUri *uri;
|
||||
+ const SoupURI *uri;
|
||||
|
||||
uri = soup_message_get_uri(message);
|
||||
g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, _("connecting to %s:%i"), uri->host, uri->port);
|
||||
}
|
||||
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
+
|
||||
static void
|
||||
translate_generic_service_log_wrote_headers_h (SoupMessage *message,
|
||||
gpointer user_data)
|
||||
@@ -618,14 +678,28 @@ translate_generic_service_log_headers_cb (const char *
|
||||
g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s %s: %s", prefix, key, value);
|
||||
}
|
||||
|
||||
+#else /* !HAVE_LIBSOUP22 */
|
||||
+
|
||||
static void
|
||||
+translate_generic_service_log_printer (SoupLogger *logger,
|
||||
+ SoupLoggerLogLevel level,
|
||||
+ char direction,
|
||||
+ const char *data,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%c %s", direction, data);
|
||||
+}
|
||||
+
|
||||
+#endif /* HAVE_LIBSOUP22 */
|
||||
+
|
||||
+static void
|
||||
translate_generic_service_progress_got_headers_h (SoupMessage *message,
|
||||
gpointer user_data)
|
||||
{
|
||||
TransferInfo *info = user_data;
|
||||
const char *content_length;
|
||||
|
||||
- content_length = soup_message_get_header(message->response_headers, "Content-Length");
|
||||
+ content_length = soup_message_headers_get(message->response_headers, "Content-Length");
|
||||
info->length = (content_length
|
||||
&& *content_length
|
||||
&& strspn(content_length, "0123456789") == strlen(content_length))
|
||||
@@ -635,6 +709,9 @@ translate_generic_service_progress_got_headers_h (Soup
|
||||
|
||||
static void
|
||||
translate_generic_service_progress_got_chunk_h (SoupMessage *message,
|
||||
+#ifdef HAVE_LIBSOUP24
|
||||
+ SoupBuffer *chunk,
|
||||
+#endif
|
||||
gpointer user_data)
|
||||
{
|
||||
TransferInfo *info = user_data;
|
||||
@@ -644,7 +721,11 @@ translate_generic_service_progress_got_chunk_h (SoupMe
|
||||
progress = -1;
|
||||
else
|
||||
{
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
info->received += message->response.length;
|
||||
+#else
|
||||
+ info->received += chunk->length;
|
||||
+#endif
|
||||
progress = (double) info->received / info->length;
|
||||
progress = CLAMP(progress, 0.0, 1.0);
|
||||
}
|
||||
@@ -660,7 +741,7 @@ translate_generic_service_html_got_headers_h (SoupMess
|
||||
TransferInfo *info = user_data;
|
||||
const char *content_type;
|
||||
|
||||
- content_type = soup_message_get_header(message->response_headers, "Content-Type");
|
||||
+ content_type = soup_message_headers_get(message->response_headers, "Content-Type");
|
||||
info->parse_html = content_type
|
||||
&& (g_str_has_prefix(content_type, "text/html")
|
||||
|| g_str_has_prefix(content_type, "application/xhtml+xml")
|
||||
@@ -680,7 +761,7 @@ translate_generic_service_html_got_body_h (SoupMessage
|
||||
info->html_http_equiv = NULL;
|
||||
}
|
||||
|
||||
- if (info->parse_html && message->response.length > 0)
|
||||
+ if (info->parse_html && SOUP_MESSAGE_RESPONSE_LENGTH (message) > 0)
|
||||
{
|
||||
char *body;
|
||||
xmlSAXHandler sax_handler = { NULL };
|
||||
@@ -694,7 +775,7 @@ translate_generic_service_html_got_body_h (SoupMessage
|
||||
sax_handler.startElement = translate_generic_service_html_start_element_cb;
|
||||
sax_handler.endElement = translate_generic_service_html_end_element_cb;
|
||||
|
||||
- body = g_strndup(message->response.body, message->response.length);
|
||||
+ body = g_strndup(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message));
|
||||
htmlSAXParseDoc(body, NULL, &sax_handler, user_data);
|
||||
g_free(body);
|
||||
}
|
||||
@@ -761,7 +842,7 @@ translate_generic_service_refresh_got_body_h (SoupMess
|
||||
{
|
||||
TransferInfo *info = user_data;
|
||||
const char *refresh_uri;
|
||||
- SoupUri *new_uri = NULL;
|
||||
+ SoupURI *new_uri = NULL;
|
||||
|
||||
refresh_uri = translate_generic_service_get_header(message, info, "Refresh");
|
||||
if (refresh_uri)
|
||||
@@ -776,9 +857,9 @@ translate_generic_service_refresh_got_body_h (SoupMess
|
||||
new_uri = soup_uri_new(refresh_uri);
|
||||
if (! new_uri)
|
||||
{
|
||||
- const SoupUri *base_uri;
|
||||
+ SoupURI *base_uri;
|
||||
|
||||
- base_uri = soup_message_get_uri(message);
|
||||
+ base_uri = (SoupURI *)soup_message_get_uri(message);
|
||||
new_uri = soup_uri_new_with_base(base_uri, refresh_uri);
|
||||
}
|
||||
}
|
||||
@@ -795,6 +876,7 @@ translate_generic_service_refresh_got_body_h (SoupMess
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef HAVE_LIBSOUP22
|
||||
static void
|
||||
translate_generic_service_redirect_handler (SoupMessage *message,
|
||||
gpointer user_data)
|
||||
@@ -831,6 +913,7 @@ translate_generic_service_redirect_handler (SoupMessag
|
||||
soup_session_requeue_message(session, message);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
static char *
|
||||
translate_generic_service_translate_text (TranslateService *service,
|
||||
@@ -938,7 +1021,7 @@ translate_generic_service_translate_text (TranslateSer
|
||||
raw = g_strndup(work, s - work);
|
||||
}
|
||||
else
|
||||
- raw = g_strdup(response);
|
||||
+ raw = g_strdup(work);
|
||||
}
|
||||
|
||||
if (raw)
|
||||
@@ -1297,7 +1380,7 @@ static SoupSession *
|
||||
translate_generic_service_soup_session_sync_new (void)
|
||||
{
|
||||
char *proxy_text_uri;
|
||||
- SoupUri *proxy_uri = NULL;
|
||||
+ SoupURI *proxy_uri = NULL;
|
||||
SoupSession *session;
|
||||
TranslateGenericSoupCookieJar *cookie_jar;
|
||||
|
||||
@@ -1317,7 +1400,7 @@ translate_generic_service_soup_session_sync_new (void)
|
||||
soup_uri_free(proxy_uri);
|
||||
|
||||
cookie_jar = translate_generic_soup_cookie_jar_new();
|
||||
- soup_session_add_filter(session, SOUP_MESSAGE_FILTER(cookie_jar));
|
||||
+ translate_generic_soup_cookie_jar_attach(cookie_jar, session);
|
||||
g_object_unref(cookie_jar);
|
||||
|
||||
return session;
|
Loading…
Add table
Add a link
Reference in a new issue