Prevent / doubling and shrink parse_url.
diff --git a/wget.c b/wget.c
index dbc2836..77577d9 100644
--- a/wget.c
+++ b/wget.c
@@ -241,31 +241,28 @@
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;
+ *uri_host = url + 7;
+
+ cp = strchr(*uri_host, ':');
+ sp = strchr(*uri_host, '/');
+
+ if (cp != NULL && (sp == NULL || cp < sp)) {
+ *cp++ = '\0';
+ *uri_port = atoi(cp);
}
- *s = '\0';
- if (*h == 0) h = defaultpath;
-
- *uri_host = url;
- *uri_path = h;
-
- if (!strcmp( *uri_host, *uri_path))
- *uri_path = defaultpath;
+ if (sp != NULL) {
+ *sp++ = '\0';
+ *uri_path = sp;
+ } else
+ *uri_path = "";
}
@@ -514,7 +511,7 @@
* 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 $
*/