X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fretr.c;h=857742979e397748f3932d566d77ecf0d89dcd7b;hb=b58816ed33c2f167ce2e199df37fe1749d67605e;hp=7bdd4193fed50e1058c2c44a962394f002a3358d;hpb=caae3b70f46bd519857b595f7f06ea0179551336;p=wget diff --git a/src/retr.c b/src/retr.c index 7bdd4193..85774297 100644 --- a/src/retr.c +++ b/src/retr.c @@ -628,8 +628,10 @@ retrieve_url (const char *origurl, char **file, char **newloc, u = url_parse (url, &up_error_code); if (!u) { - logprintf (LOG_NOTQUIET, "%s: %s.\n", url, url_error (up_error_code)); + char *error = url_error (url, up_error_code); + logprintf (LOG_NOTQUIET, "%s: %s.\n", url, error); xfree (url); + xfree (error); return URLERROR; } @@ -650,9 +652,11 @@ retrieve_url (const char *origurl, char **file, char **newloc, proxy_url = url_parse (proxy, &up_error_code); if (!proxy_url) { + char *error = url_error (proxy, up_error_code); logprintf (LOG_NOTQUIET, _("Error parsing proxy URL %s: %s.\n"), - proxy, url_error (up_error_code)); + proxy, error); xfree (url); + xfree (error); RESTORE_POST_DATA; return PROXERR; } @@ -726,11 +730,13 @@ retrieve_url (const char *origurl, char **file, char **newloc, newloc_parsed = url_parse (mynewloc, &up_error_code); if (!newloc_parsed) { + char *error = url_error (mynewloc, up_error_code); logprintf (LOG_NOTQUIET, "%s: %s.\n", escnonprint_uri (mynewloc), - url_error (up_error_code)); + error); url_free (u); xfree (url); xfree (mynewloc); + xfree (error); RESTORE_POST_DATA; return result; } @@ -822,10 +828,32 @@ retrieve_from_file (const char *file, bool html, int *count) uerr_t status; struct urlpos *url_list, *cur_url; - url_list = (html ? get_urls_html (file, NULL, NULL) - : get_urls_file (file)); + char *input_file = NULL; + const char *url = file; + status = RETROK; /* Suppose everything is OK. */ *count = 0; /* Reset the URL count. */ + + if (url_has_scheme (url)) + { + int dt; + uerr_t status; + + if (!opt.base_href) + opt.base_href = xstrdup (url); + + status = retrieve_url (url, &input_file, NULL, NULL, &dt, false); + if (status != RETROK) + return status; + + if (dt & TEXTHTML) + html = true; + } + else + input_file = (char *) file; + + url_list = (html ? get_urls_html (input_file, NULL, NULL) + : get_urls_file (input_file)); for (cur_url = url_list; cur_url; cur_url = cur_url->next, ++*count) {