1 |
vostorga 09/09/06 21:54:45 |
2 |
|
3 |
Added: libtranslate-0.99-libsoup24.diff |
4 |
Log: |
5 |
Adding patch to build against net-libs/libsoup:2.4 |
6 |
(Portage version: 2.1.6.13/cvs/Linux i686) |
7 |
|
8 |
Revision Changes Path |
9 |
1.1 dev-libs/libtranslate/files/libtranslate-0.99-libsoup24.diff |
10 |
|
11 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-libs/libtranslate/files/libtranslate-0.99-libsoup24.diff?rev=1.1&view=markup |
12 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-libs/libtranslate/files/libtranslate-0.99-libsoup24.diff?rev=1.1&content-type=text/plain |
13 |
|
14 |
Index: libtranslate-0.99-libsoup24.diff |
15 |
=================================================================== |
16 |
diff -ur libtranslate-0.99.orig/configure.ac libtranslate-0.99/configure.ac |
17 |
--- libtranslate-0.99.orig/configure.ac 2005-01-15 11:24:12.000000000 -0500 |
18 |
+++ libtranslate-0.99/configure.ac 2008-01-28 18:44:18.000000000 -0500 |
19 |
@@ -50,7 +50,11 @@ |
20 |
### optional libraries |
21 |
|
22 |
if TRANSLATE_FEATURE_ENABLED(generic); then |
23 |
- PKG_CHECK_MODULES(SOUP, [libsoup-2.2],, [TRANSLATE_FEATURE_DISABLE(generic, [libsoup not found])]) |
24 |
+ PKG_CHECK_MODULES(SOUP, [libsoup-2.4], |
25 |
+ [AC_DEFINE(HAVE_LIBSOUP24, 1, [Building with libsoup 2.4])], |
26 |
+ [PKG_CHECK_MODULES(SOUP, [libsoup-2.2], |
27 |
+ [AC_DEFINE(HAVE_LIBSOUP22, 1, [Building with libsoup 2.2])], |
28 |
+ [TRANSLATE_FEATURE_DISABLE(generic, [libsoup not found])])]) |
29 |
fi |
30 |
if TRANSLATE_FEATURE_ENABLED(generic); then |
31 |
PKG_CHECK_MODULES(LIBXML, [libxml-2.0],, [TRANSLATE_FEATURE_DISABLE(generic, [libxml not found])]) |
32 |
diff -ur libtranslate-0.99.orig/config.h.in libtranslate-0.99/config.h.in |
33 |
--- libtranslate-0.99.orig/config.h.in 2005-01-17 12:06:58.000000000 -0500 |
34 |
+++ libtranslate-0.99/config.h.in 2008-01-28 18:45:19.000000000 -0500 |
35 |
@@ -24,6 +24,12 @@ |
36 |
/* Define if your <locale.h> file defines LC_MESSAGES. */ |
37 |
#undef HAVE_LC_MESSAGES |
38 |
|
39 |
+/* Building with libsoup 2.2 */ |
40 |
+#undef HAVE_LIBSOUP22 |
41 |
+ |
42 |
+/* Building with libsoup 2.4 */ |
43 |
+#undef HAVE_LIBSOUP24 |
44 |
+ |
45 |
/* Define to 1 if you have the <locale.h> header file. */ |
46 |
#undef HAVE_LOCALE_H |
47 |
|
48 |
diff -ur libtranslate-0.99.orig/src/modules/translate-generic-service.c libtranslate-0.99/src/modules/translate-generic-service.c |
49 |
--- libtranslate-0.99.orig/src/modules/translate-generic-service.c 2008-01-28 19:34:27.000000000 -0500 |
50 |
+++ libtranslate-0.99/src/modules/translate-generic-service.c 2008-01-30 09:50:35.000000000 -0500 |
51 |
@@ -35,7 +35,9 @@ |
52 |
#include <stdlib.h> |
53 |
#include <glib/gi18n-lib.h> |
54 |
#include <libsoup/soup.h> |
55 |
+#ifdef HAVE_LIBSOUP22 |
56 |
#include <libsoup/soup-message-filter.h> |
57 |
+#endif |
58 |
#include <libxml/HTMLparser.h> |
59 |
#include "translate.h" |
60 |
#include "translate-generic-service.h" |
61 |
@@ -43,6 +45,17 @@ |
62 |
#include "translate-generic-parser.h" |
63 |
#include "translate-generic-soup-cookie-jar.h" |
64 |
|
65 |
+#ifdef HAVE_LIBSOUP22 |
66 |
+#define soup_message_headers_get soup_message_get_header |
67 |
+#define soup_message_headers_append soup_message_add_header |
68 |
+#define SoupURI SoupUri |
69 |
+#define SOUP_MESSAGE_RESPONSE_BODY(msg) ((msg)->response.body) |
70 |
+#define SOUP_MESSAGE_RESPONSE_LENGTH(msg) ((msg)->response.length) |
71 |
+#else |
72 |
+#define SOUP_MESSAGE_RESPONSE_BODY(msg) ((msg)->response_body->data) |
73 |
+#define SOUP_MESSAGE_RESPONSE_LENGTH(msg) ((msg)->response_body->length) |
74 |
+#endif |
75 |
+ |
76 |
#define MAKE_WARNING_PREFIX(service, group_pos, attribute, element) \ |
77 |
g_strdup_printf(_("in %s, group %i, \"%s\" attribute of \"%s\" element"), \ |
78 |
translate_service_get_name((service)), \ |
79 |
@@ -140,6 +153,7 @@ |
80 |
const char *name); |
81 |
|
82 |
static void translate_generic_service_log_connect (SoupMessage *message); |
83 |
+#ifdef HAVE_LIBSOUP22 |
84 |
static void translate_generic_service_log_wrote_headers_h (SoupMessage *message, |
85 |
gpointer user_data); |
86 |
static void translate_generic_service_log_wrote_body_h (SoupMessage *message, |
87 |
@@ -151,10 +165,20 @@ |
88 |
static void translate_generic_service_log_headers_cb (const char *key, |
89 |
const char *value, |
90 |
gpointer user_data); |
91 |
+#else |
92 |
+static void translate_generic_service_log_printer (SoupLogger *logger, |
93 |
+ SoupLoggerLogLevel level, |
94 |
+ char direction, |
95 |
+ const char *data, |
96 |
+ gpointer user_data); |
97 |
+#endif |
98 |
|
99 |
static void translate_generic_service_progress_got_headers_h (SoupMessage *message, |
100 |
gpointer user_data); |
101 |
static void translate_generic_service_progress_got_chunk_h (SoupMessage *message, |
102 |
+#ifdef HAVE_LIBSOUP24 |
103 |
+ SoupBuffer *chunk, |
104 |
+#endif |
105 |
gpointer user_data); |
106 |
|
107 |
static void translate_generic_service_html_got_headers_h (SoupMessage *message, |
108 |
@@ -170,8 +194,10 @@ |
109 |
static void translate_generic_service_refresh_got_body_h (SoupMessage *message, |
110 |
gpointer user_data); |
111 |
|
112 |
+#ifdef HAVE_LIBSOUP22 |
113 |
static void translate_generic_service_redirect_handler (SoupMessage *message, |
114 |
gpointer user_data); |
115 |
+#endif |
116 |
|
117 |
static char *translate_generic_service_translate_text (TranslateService *service, |
118 |
const char *text, |
119 |
@@ -419,7 +445,11 @@ |
120 |
g_return_val_if_fail(post_content_type != NULL, NULL); |
121 |
soup_message_set_request(message, |
122 |
post_content_type, |
123 |
+#ifdef HAVE_LIBSOUP22 |
124 |
SOUP_BUFFER_USER_OWNED, |
125 |
+#else |
126 |
+ SOUP_MEMORY_TEMPORARY, |
127 |
+#endif |
128 |
(char *) post, |
129 |
strlen(post)); |
130 |
} |
131 |
@@ -427,7 +457,7 @@ |
132 |
for (l = headers; l != NULL; l = l->next) |
133 |
{ |
134 |
TranslateGenericHttpHeader *header = l->data; |
135 |
- soup_message_add_header(message->request_headers, header->name, header->value); |
136 |
+ soup_message_headers_append(message->request_headers, header->name, header->value); |
137 |
} |
138 |
|
139 |
info.session = translate_generic_service_soup_session_sync_new(); |
140 |
@@ -435,12 +465,21 @@ |
141 |
info.html_http_equiv = NULL; |
142 |
|
143 |
if (translate_generic_debug_flags & TRANSLATE_GENERIC_DEBUG_LOG_TRANSFERS) |
144 |
- g_object_connect(message, |
145 |
- "signal::wrote-headers", translate_generic_service_log_wrote_headers_h, &info, |
146 |
- "signal::wrote-body", translate_generic_service_log_wrote_body_h, &info, |
147 |
- "signal::got-headers", translate_generic_service_log_got_headers_h, &info, |
148 |
- "signal::got-body", translate_generic_service_log_got_body_h, &info, |
149 |
- NULL); |
150 |
+ { |
151 |
+#ifdef HAVE_LIBSOUP22 |
152 |
+ g_object_connect(message, |
153 |
+ "signal::wrote-headers", translate_generic_service_log_wrote_headers_h, &info, |
154 |
+ "signal::wrote-body", translate_generic_service_log_wrote_body_h, &info, |
155 |
+ "signal::got-headers", translate_generic_service_log_got_headers_h, &info, |
156 |
+ "signal::got-body", translate_generic_service_log_got_body_h, &info, |
157 |
+ NULL); |
158 |
+#else |
159 |
+ SoupLogger *logger = soup_logger_new (SOUP_LOGGER_LOG_BODY, -1); |
160 |
+ soup_logger_set_printer (logger, translate_generic_service_log_printer, NULL, NULL); |
161 |
+ soup_logger_attach (logger, info.session); |
162 |
+ g_object_unref (logger); |
163 |
+#endif |
164 |
+ } |
165 |
|
166 |
if (progress_func) |
167 |
{ |
168 |
@@ -468,6 +507,7 @@ |
169 |
if (flags & TRANSFER_FOLLOW_REFRESH) |
170 |
g_signal_connect(message, "got-body", G_CALLBACK(translate_generic_service_refresh_got_body_h), &info); |
171 |
|
172 |
+#ifdef HAVE_LIBSOUP22 |
173 |
/* http://bugzilla.ximian.com/show_bug.cgi?id=70688 */ |
174 |
soup_message_set_flags(message, SOUP_MESSAGE_NO_REDIRECT); |
175 |
soup_message_add_status_class_handler(message, |
176 |
@@ -475,6 +515,7 @@ |
177 |
SOUP_HANDLER_POST_BODY, |
178 |
translate_generic_service_redirect_handler, |
179 |
info.session); |
180 |
+#endif |
181 |
|
182 |
if (translate_generic_debug_flags & TRANSLATE_GENERIC_DEBUG_LOG_TRANSFERS) |
183 |
translate_generic_service_log_connect(message); |
184 |
@@ -515,18 +556,18 @@ |
185 |
|
186 |
if (charset) |
187 |
{ |
188 |
- response = g_convert(message->response.body, message->response.length, "UTF-8", charset, NULL, NULL, err); |
189 |
+ response = g_convert(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message), "UTF-8", charset, NULL, NULL, err); |
190 |
g_free(charset); |
191 |
} |
192 |
else |
193 |
{ |
194 |
- if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(message->response.body, message->response.length, NULL)) |
195 |
+ if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message), NULL)) |
196 |
g_set_error(err, |
197 |
TRANSLATE_GENERIC_SERVICE_ERROR, |
198 |
TRANSLATE_GENERIC_SERVICE_ERROR_TRANSFER, |
199 |
_("invalid UTF-8")); |
200 |
else |
201 |
- response = g_strndup(message->response.body, message->response.length); |
202 |
+ response = g_strndup(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message)); |
203 |
} |
204 |
} |
205 |
else |
206 |
@@ -567,7 +608,7 @@ |
207 |
: NULL; |
208 |
|
209 |
if (! value) |
210 |
- value = soup_message_get_header(message->response_headers, name); |
211 |
+ value = soup_message_headers_get(message->response_headers, name); |
212 |
|
213 |
return value; |
214 |
} |
215 |
@@ -575,12 +616,14 @@ |
216 |
static void |
217 |
translate_generic_service_log_connect (SoupMessage *message) |
218 |
{ |
219 |
- const SoupUri *uri; |
220 |
+ const SoupURI *uri; |
221 |
|
222 |
uri = soup_message_get_uri(message); |
223 |
g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, _("connecting to %s:%i"), uri->host, uri->port); |
224 |
} |
225 |
|
226 |
+#ifdef HAVE_LIBSOUP22 |
227 |
+ |
228 |
static void |
229 |
translate_generic_service_log_wrote_headers_h (SoupMessage *message, |
230 |
gpointer user_data) |
231 |
@@ -635,6 +678,20 @@ |
232 |
g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s %s: %s", prefix, key, value); |
233 |
} |
234 |
|
235 |
+#else /* !HAVE_LIBSOUP22 */ |
236 |
+ |
237 |
+static void |
238 |
+translate_generic_service_log_printer (SoupLogger *logger, |
239 |
+ SoupLoggerLogLevel level, |
240 |
+ char direction, |
241 |
+ const char *data, |
242 |
+ gpointer user_data) |
243 |
+{ |
244 |
+ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%c %s", direction, data); |
245 |
+} |
246 |
+ |
247 |
+#endif /* HAVE_LIBSOUP22 */ |
248 |
+ |
249 |
static void |
250 |
translate_generic_service_progress_got_headers_h (SoupMessage *message, |
251 |
gpointer user_data) |
252 |
@@ -642,7 +699,7 @@ |
253 |
TransferInfo *info = user_data; |
254 |
const char *content_length; |
255 |
|
256 |
- content_length = soup_message_get_header(message->response_headers, "Content-Length"); |
257 |
+ content_length = soup_message_headers_get(message->response_headers, "Content-Length"); |
258 |
info->length = (content_length |
259 |
&& *content_length |
260 |
&& strspn(content_length, "0123456789") == strlen(content_length)) |
261 |
@@ -652,6 +709,9 @@ |
262 |
|
263 |
static void |
264 |
translate_generic_service_progress_got_chunk_h (SoupMessage *message, |
265 |
+#ifdef HAVE_LIBSOUP24 |
266 |
+ SoupBuffer *chunk, |
267 |
+#endif |
268 |
gpointer user_data) |
269 |
{ |
270 |
TransferInfo *info = user_data; |
271 |
@@ -661,7 +721,11 @@ |
272 |
progress = -1; |
273 |
else |
274 |
{ |
275 |
+#ifdef HAVE_LIBSOUP22 |
276 |
info->received += message->response.length; |
277 |
+#else |
278 |
+ info->received += chunk->length; |
279 |
+#endif |
280 |
progress = (double) info->received / info->length; |
281 |
progress = CLAMP(progress, 0.0, 1.0); |
282 |
} |
283 |
@@ -677,7 +741,7 @@ |
284 |
TransferInfo *info = user_data; |
285 |
const char *content_type; |
286 |
|
287 |
- content_type = soup_message_get_header(message->response_headers, "Content-Type"); |
288 |
+ content_type = soup_message_headers_get(message->response_headers, "Content-Type"); |
289 |
info->parse_html = content_type |
290 |
&& (g_str_has_prefix(content_type, "text/html") |
291 |
|| g_str_has_prefix(content_type, "application/xhtml+xml") |
292 |
@@ -697,7 +761,7 @@ |
293 |
info->html_http_equiv = NULL; |
294 |
} |
295 |
|
296 |
- if (info->parse_html && message->response.length > 0) |
297 |
+ if (info->parse_html && SOUP_MESSAGE_RESPONSE_LENGTH (message) > 0) |
298 |
{ |
299 |
char *body; |
300 |
xmlSAXHandler sax_handler = { NULL }; |
301 |
@@ -711,7 +775,7 @@ |
302 |
sax_handler.startElement = translate_generic_service_html_start_element_cb; |
303 |
sax_handler.endElement = translate_generic_service_html_end_element_cb; |
304 |
|
305 |
- body = g_strndup(message->response.body, message->response.length); |
306 |
+ body = g_strndup(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message)); |
307 |
htmlSAXParseDoc(body, NULL, &sax_handler, user_data); |
308 |
g_free(body); |
309 |
} |
310 |
@@ -778,7 +842,7 @@ |
311 |
{ |
312 |
TransferInfo *info = user_data; |
313 |
const char *refresh_uri; |
314 |
- SoupUri *new_uri = NULL; |
315 |
+ SoupURI *new_uri = NULL; |
316 |
|
317 |
refresh_uri = translate_generic_service_get_header(message, info, "Refresh"); |
318 |
if (refresh_uri) |
319 |
@@ -793,9 +857,9 @@ |
320 |
new_uri = soup_uri_new(refresh_uri); |
321 |
if (! new_uri) |
322 |
{ |
323 |
- const SoupUri *base_uri; |
324 |
+ SoupURI *base_uri; |
325 |
|
326 |
- base_uri = soup_message_get_uri(message); |
327 |
+ base_uri = (SoupURI *)soup_message_get_uri(message); |
328 |
new_uri = soup_uri_new_with_base(base_uri, refresh_uri); |
329 |
} |
330 |
} |
331 |
@@ -812,6 +876,7 @@ |
332 |
} |
333 |
} |
334 |
|
335 |
+#ifdef HAVE_LIBSOUP22 |
336 |
static void |
337 |
translate_generic_service_redirect_handler (SoupMessage *message, |
338 |
gpointer user_data) |
339 |
@@ -848,6 +913,7 @@ |
340 |
soup_session_requeue_message(session, message); |
341 |
} |
342 |
} |
343 |
+#endif |
344 |
|
345 |
static char * |
346 |
translate_generic_service_translate_text (TranslateService *service, |
347 |
@@ -1314,7 +1380,7 @@ |
348 |
translate_generic_service_soup_session_sync_new (void) |
349 |
{ |
350 |
char *proxy_text_uri; |
351 |
- SoupUri *proxy_uri = NULL; |
352 |
+ SoupURI *proxy_uri = NULL; |
353 |
SoupSession *session; |
354 |
TranslateGenericSoupCookieJar *cookie_jar; |
355 |
|
356 |
@@ -1334,7 +1400,7 @@ |
357 |
soup_uri_free(proxy_uri); |
358 |
|
359 |
cookie_jar = translate_generic_soup_cookie_jar_new(); |
360 |
- soup_session_add_filter(session, SOUP_MESSAGE_FILTER(cookie_jar)); |
361 |
+ translate_generic_soup_cookie_jar_attach(cookie_jar, session); |
362 |
g_object_unref(cookie_jar); |
363 |
|
364 |
return session; |
365 |
diff -ur libtranslate-0.99.orig/src/modules/translate-generic-soup-cookie-jar.c libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.c |
366 |
--- libtranslate-0.99.orig/src/modules/translate-generic-soup-cookie-jar.c 2005-01-17 11:46:53.000000000 -0500 |
367 |
+++ libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.c 2008-01-28 19:48:21.000000000 -0500 |
368 |
@@ -29,9 +29,12 @@ |
369 |
* POSSIBILITY OF SUCH DAMAGE. |
370 |
*/ |
371 |
|
372 |
+#include "config.h" |
373 |
#include <string.h> |
374 |
#include <libsoup/soup.h> |
375 |
+#ifdef HAVE_LIBSOUP22 |
376 |
#include <libsoup/soup-message-filter.h> |
377 |
+#endif |
378 |
#include "translate-generic-soup-cookie-jar.h" |
379 |
|
380 |
struct _TranslateGenericSoupCookieJarPrivate |
381 |
@@ -44,9 +47,12 @@ |
382 |
static void translate_generic_soup_cookie_jar_register_type (GType *type); |
383 |
static void translate_generic_soup_cookie_jar_class_init (TranslateGenericSoupCookieJarClass *class); |
384 |
static void translate_generic_soup_cookie_jar_init (TranslateGenericSoupCookieJar *jar); |
385 |
+#ifdef HAVE_LIBSOUP22 |
386 |
static void translate_generic_soup_cookie_jar_filter_init (SoupMessageFilterClass *iface); |
387 |
+#else |
388 |
+#define SoupMessageFilter TranslateGenericSoupCookieJar |
389 |
+#endif |
390 |
static void translate_generic_soup_cookie_jar_finalize (GObject *object); |
391 |
- |
392 |
static void translate_generic_soup_cookie_jar_setup_message (SoupMessageFilter *filter, |
393 |
SoupMessage *message); |
394 |
|
395 |
@@ -75,17 +81,21 @@ |
396 |
0, |
397 |
(GInstanceInitFunc) translate_generic_soup_cookie_jar_init |
398 |
}; |
399 |
+#ifdef HAVE_LIBSOUP22 |
400 |
static const GInterfaceInfo filter_info = { |
401 |
(GInterfaceInitFunc) translate_generic_soup_cookie_jar_filter_init, |
402 |
NULL, |
403 |
NULL |
404 |
}; |
405 |
+#endif |
406 |
|
407 |
*type = g_type_register_static(G_TYPE_OBJECT, |
408 |
"TranslateGenericSoupCookieJar", |
409 |
&info, |
410 |
0); |
411 |
+#ifdef HAVE_LIBSOUP22 |
412 |
g_type_add_interface_static(*type, SOUP_TYPE_MESSAGE_FILTER, &filter_info); |
413 |
+#endif |
414 |
} |
415 |
|
416 |
static void |
417 |
@@ -107,11 +117,13 @@ |
418 |
TranslateGenericSoupCookieJarPrivate); |
419 |
} |
420 |
|
421 |
+#ifdef HAVE_LIBSOUP22 |
422 |
static void |
423 |
translate_generic_soup_cookie_jar_filter_init (SoupMessageFilterClass *iface) |
424 |
{ |
425 |
iface->setup_message = translate_generic_soup_cookie_jar_setup_message; |
426 |
} |
427 |
+#endif |
428 |
|
429 |
static void |
430 |
translate_generic_soup_cookie_jar_finalize (GObject *object) |
431 |
@@ -125,26 +137,46 @@ |
432 |
} |
433 |
|
434 |
static void |
435 |
+add_cookie_to_jar (TranslateGenericSoupCookieJar *jar, const char *cookie) |
436 |
+{ |
437 |
+ char *s; |
438 |
+ |
439 |
+ s = strchr(cookie, ';'); |
440 |
+ if (s) |
441 |
+ jar->priv->cookies = g_slist_append(jar->priv->cookies, g_strndup(cookie, s - cookie)); |
442 |
+} |
443 |
+ |
444 |
+#ifdef HAVE_LIBSOUP24 |
445 |
+static void |
446 |
+maybe_add_cookie_to_jar (const char *header, const char *value, gpointer jar) |
447 |
+{ |
448 |
+ if (!g_ascii_strcasecmp (header, "Set-Cookie")) |
449 |
+ add_cookie_to_jar (jar, value); |
450 |
+} |
451 |
+#endif |
452 |
+ |
453 |
+static void |
454 |
translate_generic_soup_cookie_jar_setup_message (SoupMessageFilter *filter, |
455 |
- SoupMessage *message) |
456 |
+ SoupMessage *message) |
457 |
{ |
458 |
TranslateGenericSoupCookieJar *jar = TRANSLATE_GENERIC_SOUP_COOKIE_JAR(filter); |
459 |
- const GSList *cookies; |
460 |
const GSList *l; |
461 |
|
462 |
/* FIXME: add full RFC 2965 support */ |
463 |
|
464 |
+#ifdef HAVE_LIBSOUP22 |
465 |
+ const GSList *cookies; |
466 |
+ |
467 |
cookies = soup_message_get_header_list(message->response_headers, "Set-Cookie"); |
468 |
for (l = cookies; l != NULL; l = l->next) |
469 |
{ |
470 |
const char *cookie = l->data; |
471 |
- char *s; |
472 |
- |
473 |
- s = strchr(cookie, ';'); |
474 |
- if (s) |
475 |
- jar->priv->cookies = g_slist_append(jar->priv->cookies, g_strndup(cookie, s - cookie)); |
476 |
+ add_cookie_to_jar(jar, cookie); |
477 |
} |
478 |
- |
479 |
+#else |
480 |
+ soup_message_headers_foreach(message->response_headers, maybe_add_cookie_to_jar, jar); |
481 |
+#endif |
482 |
+ |
483 |
if (jar->priv->cookies) |
484 |
{ |
485 |
GString *string; |
486 |
@@ -159,13 +191,44 @@ |
487 |
g_string_append(string, "; "); |
488 |
} |
489 |
|
490 |
+#ifdef HAVE_LIBSOUP22 |
491 |
soup_message_add_header(message->request_headers, "Cookie", string->str); |
492 |
+#else |
493 |
+ soup_message_headers_append(message->request_headers, "Cookie", string->str); |
494 |
+#endif |
495 |
g_string_free(string, TRUE); |
496 |
} |
497 |
} |
498 |
|
499 |
+#ifdef HAVE_LIBSOUP24 |
500 |
+static void |
501 |
+translate_generic_soup_cookie_jar_request_started (SoupSession *session, |
502 |
+ SoupMessage *message, |
503 |
+ SoupSocket *socket, |
504 |
+ gpointer cookie_jar) |
505 |
+{ |
506 |
+ translate_generic_soup_cookie_jar_setup_message (cookie_jar, message); |
507 |
+} |
508 |
+#endif |
509 |
+ |
510 |
TranslateGenericSoupCookieJar * |
511 |
translate_generic_soup_cookie_jar_new (void) |
512 |
{ |
513 |
return g_object_new(TRANSLATE_GENERIC_TYPE_SOUP_COOKIE_JAR, NULL); |
514 |
} |
515 |
+ |
516 |
+void |
517 |
+translate_generic_soup_cookie_jar_attach (TranslateGenericSoupCookieJar *cookie_jar, |
518 |
+ SoupSession *session) |
519 |
+{ |
520 |
+#ifdef HAVE_LIBSOUP22 |
521 |
+ soup_session_add_filter (session, SOUP_MESSAGE_FILTER(cookie_jar)); |
522 |
+#else |
523 |
+ g_signal_connect (session, "request_started", |
524 |
+ G_CALLBACK (translate_generic_soup_cookie_jar_request_started), |
525 |
+ cookie_jar); |
526 |
+ g_object_set_data_full (G_OBJECT (session), "TranslateGenericSoupCookieJar", |
527 |
+ g_object_ref (cookie_jar), g_object_unref); |
528 |
+#endif |
529 |
+} |
530 |
+ |
531 |
diff -ur libtranslate-0.99.orig/src/modules/translate-generic-soup-cookie-jar.h libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.h |
532 |
--- libtranslate-0.99.orig/src/modules/translate-generic-soup-cookie-jar.h 2005-01-17 11:47:00.000000000 -0500 |
533 |
+++ libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.h 2008-01-28 19:17:24.000000000 -0500 |
534 |
@@ -33,6 +33,7 @@ |
535 |
#define _TRANSLATE_GENERIC_SOUP_COOKIE_JAR_H |
536 |
|
537 |
#include <glib-object.h> |
538 |
+#include <libsoup/soup-session.h> |
539 |
|
540 |
#define TRANSLATE_GENERIC_TYPE_SOUP_COOKIE_JAR (translate_generic_soup_cookie_jar_get_type()) |
541 |
#define TRANSLATE_GENERIC_SOUP_COOKIE_JAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TRANSLATE_GENERIC_TYPE_SOUP_COOKIE_JAR, TranslateGenericSoupCookieJar)) |
542 |
@@ -59,5 +60,6 @@ |
543 |
|
544 |
GType translate_generic_soup_cookie_jar_get_type (void); |
545 |
TranslateGenericSoupCookieJar *translate_generic_soup_cookie_jar_new (void); |
546 |
+void translate_generic_soup_cookie_jar_attach (TranslateGenericSoupCookieJar *cookie_jar, SoupSession *session); |
547 |
|
548 |
#endif /* _TRANSLATE_GENERIC_SOUP_COOKIE_JAR_H */ |