X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Frecur.c;h=786824583c1553fd66254ac3c4fae055f8799e56;hb=26a3eea8e2f42c621ce6c40a93acf5ff1cd12220;hp=baeaed5873d8f2a0ce57b3325e53845898c9f9b0;hpb=bfd8a73f004b95d044741f4cb78ecad9de92bddc;p=wget diff --git a/src/recur.c b/src/recur.c index baeaed58..78682458 100644 --- a/src/recur.c +++ b/src/recur.c @@ -51,7 +51,6 @@ as that of the covered work. */ #include "html-url.h" #include "css-url.h" #include "spider.h" -#include "iri.h" /* Functions for maintaining the URL queue. */ @@ -116,8 +115,8 @@ url_enqueue (struct url_queue *queue, struct iri *i, DEBUGP (("Queue count %d, maxcount %d.\n", queue->count, queue->maxcount)); if (i) - DEBUGP (("[IRI Enqueuing %s with %s\n", quote (url), - i->uri_encoding ? quote (i->uri_encoding) : "None")); + DEBUGP (("[IRI Enqueuing %s with %s\n", quote_n (0, url), + i->uri_encoding ? quote_n (1, i->uri_encoding) : "None")); if (queue->tail) queue->tail->next = qel; @@ -188,7 +187,7 @@ static bool descend_redirect_p (const char *, const char *, int, options, add it to the queue. */ uerr_t -retrieve_tree (const char *start_url) +retrieve_tree (const char *start_url, struct iri *pi) { uerr_t status = RETROK; @@ -202,13 +201,25 @@ retrieve_tree (const char *start_url) int up_error_code; struct url *start_url_parsed; struct iri *i = iri_new (); - set_uri_encoding (i, opt.locale, true); + +#define COPYSTR(x) (x) ? xstrdup(x) : NULL; + /* Duplicate pi struct if not NULL */ + if (pi) + { + i->uri_encoding = COPYSTR (pi->uri_encoding); + i->content_encoding = COPYSTR (pi->content_encoding); + i->utf8_encode = pi->utf8_encode; + } + else + set_uri_encoding (i, opt.locale, true); +#undef COPYSTR start_url_parsed = url_parse (start_url, &up_error_code, i); if (!start_url_parsed) { - logprintf (LOG_NOTQUIET, "%s: %s.\n", start_url, - url_error (up_error_code)); + char *error = url_error (start_url, up_error_code); + logprintf (LOG_NOTQUIET, "%s: %s.\n", start_url, error); + xfree (error); return URLERROR; }