aboutsummaryrefslogtreecommitdiff
path: root/lib/libfetch/fetch.c
diff options
context:
space:
mode:
authorHajimu UMEMOTO <ume@FreeBSD.org>2000-05-20 18:23:51 +0000
committerHajimu UMEMOTO <ume@FreeBSD.org>2000-05-20 18:23:51 +0000
commit28c645cf6a9ec7ece1f37cddc001656c25344c64 (patch)
treee4efc5b01d36d32e334a7b47addcfced88623a87 /lib/libfetch/fetch.c
parentfac3d98105aebdcd5032e1d904058a0822bb26d4 (diff)
downloadsrc-28c645cf6a9ec7ece1f37cddc001656c25344c64.tar.gz
src-28c645cf6a9ec7ece1f37cddc001656c25344c64.zip
IPv6 support.
Notes
Notes: svn path=/head/; revision=60737
Diffstat (limited to 'lib/libfetch/fetch.c')
-rw-r--r--lib/libfetch/fetch.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/libfetch/fetch.c b/lib/libfetch/fetch.c
index ecf15b1fe97f..ad9932f3c514 100644
--- a/lib/libfetch/fetch.c
+++ b/lib/libfetch/fetch.c
@@ -286,9 +286,18 @@ fetchParseURL(char *URL)
} else p = URL;
/* hostname */
- for (i = 0; *p && (*p != '/') && (*p != ':'); p++)
- if (i < MAXHOSTNAMELEN)
- u->host[i++] = *p;
+#ifdef INET6
+ if (*p == '[' && (q = strchr(p + 1, ']')) != NULL &&
+ (*++q == '\0' || *q == '/' || *q == ':')) {
+ if ((i = q - p - 2) > MAXHOSTNAMELEN)
+ i = MAXHOSTNAMELEN;
+ strncpy(u->host, ++p, i);
+ p = q;
+ } else
+#endif
+ for (i = 0; *p && (*p != '/') && (*p != ':'); p++)
+ if (i < MAXHOSTNAMELEN)
+ u->host[i++] = *p;
/* port */
if (*p == ':') {