Hi,

I attached 3 patchs:

 - retry.patch: move name of output file outside the retry loop. Should
   keep the filename defined by user, instead of pike one from server.
 
 - spell.patch: correct a small spelling error

 - url-user.patch: a small change in url_parse() in order to copte with
   @ char in url path (http://example.com/my@funny@path isn't well
   parsed)

And another note, the url_parse() don't copte with url in ipv6
(for example http://[2a00:1450:4007:807::1010]:80/), but I don't known
if it is a real issue for now.

Thanks.
-- 
Sebastien Marie
Index: b/main.c
===================================================================
--- a/main.c    2015-08-16 10:00:25.000000000 +0200
+++ b/main.c    2015-08-17 18:48:08.951532825 +0200
@@ -108,8 +108,8 @@ main(int argc, char *argv[])
        }
 
        for (i = 0; i < argc; i++) {
-retry:
                fn = (output) ? output : basename(argv[i]);
+retry:
                url_str = url_encode(argv[i]);
                p = url_type(url_str);
                if (url_parse(url_str, &url, p) != 0)
Index: b/main.c
===================================================================
--- a/main.c    2015-08-17 18:48:08.951532825 +0200
+++ b/main.c    2015-08-17 19:32:54.811047138 +0200
@@ -119,7 +119,7 @@ retry:
                        (void)strlcpy(url.port, port, sizeof(url.port));
 
                if (strcmp(url.path, "/") == 0 || strlen(url.path) == 0)
-                       errx(1, "No filename afer host: %s", url.host);
+                       errx(1, "No filename after host: %s", url.host);
 
                if (url_connect(&url, pproxy) == -1)
                        return (-1);
Index: b/util.c
===================================================================
--- a/util.c    2015-08-17 19:29:39.239294584 +0200
+++ b/util.c    2015-08-17 19:37:40.483642472 +0200
@@ -198,6 +198,16 @@ url_parse(const char *url_str, struct ur
        else
                s = curl;
 
+       /* extract url path */
+       if ((e = strchr(s, '/'))) {
+               if (strlcpy(url->path, e,
+                   sizeof(url->path)) >= sizeof(url->path)) {
+                       warnx("url_parse: path overflow");
+                       goto cleanup;
+               }
+               *e = '\0';
+       }
+
        /* extract user and password */
        if ((e = strchr(s, '@'))) {
                *e++ = '\0';
@@ -221,16 +231,6 @@ url_parse(const char *url_str, struct ur
                s = e;
        }
 
-       /* extract url path */
-       if ((e = strchr(s, '/'))) {
-               if (strlcpy(url->path, e,
-                   sizeof(url->path)) >= sizeof(url->path)) {
-                       warnx("url_parse: path overflow");
-                       goto cleanup;
-               }
-               *e = '\0';
-       }
-
        /* extract url port */
        if ((t = strchr(s, ':'))) {
                *t++ = '\0';

Reply via email to