cvs: php4 /ext/standard url.c

From: Date: Fri, 22 Sep 2000 00:12:01 +0000
Subject: cvs: php4 /ext/standard url.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-1823@lists.php.net to get a copy of this message
venaas Thu Sep 21 17:12:01 2000 EDT Modified files: /php4/ext/standard url.c Log: Parsing of URLs with literal IPv6 addresses, see RFC 2732 @- IPv6 support in fopen (one can access IPv6 ftp/web servers) (Stig Venaas) Index: php4/ext/standard/url.c diff -u php4/ext/standard/url.c:1.28 php4/ext/standard/url.c:1.29 --- php4/ext/standard/url.c:1.28 Tue Aug 8 02:06:51 2000 +++ php4/ext/standard/url.c Thu Sep 21 17:12:00 2000 @@ -15,7 +15,7 @@ | Author: Jim Winstead (jimw@php.net) | +----------------------------------------------------------------------+ */ -/* $Id: url.c,v 1.28 2000/08/08 09:06:51 martin Exp $ */ +/* $Id: url.c,v 1.29 2000/09/22 00:12:00 venaas Exp $ */ #include <stdlib.h> #include <string.h> @@ -116,8 +116,8 @@ regfree(&re); /* free the old regex */ - if ((cerr=regcomp(&re, "^(([^@:]+)(:([^@:]+))?@)?([^:@]+)(:([^:@]+))?", REG_EXTENDED)) - || (err=regexec(&re, result, 10, subs, 0))) { + if ((cerr=regcomp(&re, "^(([^@:]+)(:([^@:]+))?@)?((\\[(.*)\\])|([^:@]+))(:([^:@]+))?", REG_EXTENDED)) + || (err=regexec(&re, result, 11, subs, 0))) { STR_FREE(ret->scheme); STR_FREE(ret->path); STR_FREE(ret->query); @@ -135,11 +135,13 @@ if (subs[4].rm_so != -1 && subs[4].rm_so < length) { ret->pass = estrndup(result + subs[4].rm_so, subs[4].rm_eo - subs[4].rm_so); } - if (subs[5].rm_so != -1 && subs[5].rm_so < length) { - ret->host = estrndup(result + subs[5].rm_so, subs[5].rm_eo - subs[5].rm_so); - } if (subs[7].rm_so != -1 && subs[7].rm_so < length) { - ret->port = (unsigned short) strtol(result + subs[7].rm_so, NULL, 10); + ret->host = estrndup(result + subs[7].rm_so, subs[7].rm_eo - subs[7].rm_so); + } else if (subs[8].rm_so != -1 && subs[8].rm_so < length) { + ret->host = estrndup(result + subs[8].rm_so, subs[8].rm_eo - subs[8].rm_so); + } + if (subs[10].rm_so != -1 && subs[10].rm_so < length) { + ret->port = (unsigned short) strtol(result + subs[10].rm_so, NULL, 10); } efree(result); }

« previous php.cvs (#1823) next »