Prevent / doubling and shrink parse_url.
authorMatt Kraai <kraai@debian.org>
Wed, 3 Jan 2001 16:15:15 +0000 (16:15 -0000)
committerMatt Kraai <kraai@debian.org>
Wed, 3 Jan 2001 16:15:15 +0000 (16:15 -0000)
networking/wget.c
wget.c

index dbc28369881da0720dc4d79f74bf26d76736203b..77577d9b4f090c35e72918c31436989aadd837b8 100644 (file)
@@ -241,31 +241,28 @@ int wget_main(int argc, char **argv)
 
 void parse_url(char *url, char **uri_host, int *uri_port, char **uri_path)
 {
-       char *s, *h;
-       static char *defaultpath = "/";
+       char *cp, *sp;
 
        *uri_port = 80;
 
        if (strncmp(url, "http://", 7) != 0)
                error_msg_and_die("not an http url: %s\n", url);
 
-       /* pull the host portion to the front of the buffer */
-       for (s = url, h = url+7 ; *h != '/' && *h != 0; ++h) {
-               if (*h == ':') {
-                       *uri_port = atoi(h+1);
-                       *h = '\0';
-               }
-               *s++ = *h;
-       }
-       *s = '\0';
+       *uri_host = url + 7;
 
-       if (*h == 0) h = defaultpath;
+       cp = strchr(*uri_host, ':');
+       sp = strchr(*uri_host, '/');
 
-       *uri_host = url;
-       *uri_path = h;
+       if (cp != NULL && (sp == NULL || cp < sp)) {
+               *cp++ = '\0';
+               *uri_port = atoi(cp);
+       }
 
-       if (!strcmp( *uri_host, *uri_path))
-               *uri_path = defaultpath;
+       if (sp != NULL) {
+               *sp++ = '\0';
+               *uri_path = sp;
+       } else
+               *uri_path = "";
 }
 
 
@@ -514,7 +511,7 @@ progressmeter(int flag)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     $Id: wget.c,v 1.14 2000/12/18 03:08:29 kraai Exp $
+ *     $Id: wget.c,v 1.15 2001/01/03 16:15:15 kraai Exp $
  */
 
 
diff --git a/wget.c b/wget.c
index dbc28369881da0720dc4d79f74bf26d76736203b..77577d9b4f090c35e72918c31436989aadd837b8 100644 (file)
--- a/wget.c
+++ b/wget.c
@@ -241,31 +241,28 @@ int wget_main(int argc, char **argv)
 
 void parse_url(char *url, char **uri_host, int *uri_port, char **uri_path)
 {
-       char *s, *h;
-       static char *defaultpath = "/";
+       char *cp, *sp;
 
        *uri_port = 80;
 
        if (strncmp(url, "http://", 7) != 0)
                error_msg_and_die("not an http url: %s\n", url);
 
-       /* pull the host portion to the front of the buffer */
-       for (s = url, h = url+7 ; *h != '/' && *h != 0; ++h) {
-               if (*h == ':') {
-                       *uri_port = atoi(h+1);
-                       *h = '\0';
-               }
-               *s++ = *h;
-       }
-       *s = '\0';
+       *uri_host = url + 7;
 
-       if (*h == 0) h = defaultpath;
+       cp = strchr(*uri_host, ':');
+       sp = strchr(*uri_host, '/');
 
-       *uri_host = url;
-       *uri_path = h;
+       if (cp != NULL && (sp == NULL || cp < sp)) {
+               *cp++ = '\0';
+               *uri_port = atoi(cp);
+       }
 
-       if (!strcmp( *uri_host, *uri_path))
-               *uri_path = defaultpath;
+       if (sp != NULL) {
+               *sp++ = '\0';
+               *uri_path = sp;
+       } else
+               *uri_path = "";
 }
 
 
@@ -514,7 +511,7 @@ progressmeter(int flag)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     $Id: wget.c,v 1.14 2000/12/18 03:08:29 kraai Exp $
+ *     $Id: wget.c,v 1.15 2001/01/03 16:15:15 kraai Exp $
  */