diff options
author | Hajimu UMEMOTO <ume@FreeBSD.org> | 2000-05-20 18:23:51 +0000 |
---|---|---|
committer | Hajimu UMEMOTO <ume@FreeBSD.org> | 2000-05-20 18:23:51 +0000 |
commit | 28c645cf6a9ec7ece1f37cddc001656c25344c64 (patch) | |
tree | e4efc5b01d36d32e334a7b47addcfced88623a87 /lib/libfetch/fetch.c | |
parent | fac3d98105aebdcd5032e1d904058a0822bb26d4 (diff) | |
download | src-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.c | 15 |
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 == ':') { |