Index: uri.tcl
===================================================================
RCS file: /cvsroot/tcllib/tcllib/modules/uri/uri.tcl,v
retrieving revision 1.25
diff -u -b -r1.25 uri.tcl
--- uri.tcl	25 Jan 2004 07:29:51 -0000	1.25
+++ uri.tcl	16 Apr 2004 02:41:17 -0000
@@ -316,7 +316,7 @@
     if {[string match "//*" $url]} {
 	set url [string range $url 2 end]
 
-	array set parts [GetHostPort url]
+    array set parts [GetUPHP url]
     }
 
     set parts(path) [string trimleft $url /]
@@ -334,10 +334,15 @@
 
 proc ::uri::JoinHttpInner {scheme defport args} {
     array set components [list \
-	host {} port $defport path {} query {} \
+    host {} port $defport path {} query {} user {} pwd {} \
     ]
     array set components $args
 
+    set userPwd {}
+    if {[string length $components(user)] || [string length $components(pwd)]} {
+    set userPwd $components(user)[expr {[string length $components(pwd)] ? ":$components(pwd)" : {}}]@
+    }
+    
     set port {}
     if {[string length $components(port)] && $components(port) != $defport} {
 	set port :$components(port)
@@ -356,7 +361,7 @@
 	set components(fragment) ""
     }
 
-    return $scheme://$components(host)$port/$components(path)$components(fragment)$query
+    return $scheme://$userPwd$components(host)$port/$components(path)$components(fragment)$query
 }
 
 proc ::uri::SplitFile {url} {
@@ -770,7 +775,7 @@
 # ------------------------------------------------
 # ftp		//<user>:<password>@<host>:<port>/<cwd1>/.../<cwdN>/<name>;type=<typecode>
 #
-# http		//<host>:<port>/<path>?<searchpart>
+# http      //<user>:<password>@<host>:<port>/<path>?<searchpart>
 #
 # gopher	//<host>:<port>/<gophertype><selector>
 #				<gophertype><selector>%09<search>
@@ -828,8 +833,8 @@
 uri::register http {
     variable	escape \
         [set [namespace parent [namespace current]]::basic::escape]
-    variable	hostOrPort	\
-        [set [namespace parent [namespace current]]::basic::hostOrPort]
+    variable    login   \
+        [set [namespace parent [namespace current]]::basic::login]
 
     variable	charN		{[a-zA-Z0-9$_.+!*'(,);:@&=-]}
     variable	char		"($charN|${escape})"
@@ -838,7 +843,7 @@
     variable	path		"${segment}(/${segment})*"
     variable	search		$segment
     variable	schemepart	\
-	    "//${hostOrPort}(/${path}(\\?${search})?)?"
+        "//${login}(/${path}(\\?${search})?)?"
 
     variable	url		"http:${schemepart}"
 }
@@ -929,4 +934,4 @@
     variable	url		"prospero:$schemepart"
 }
 
-package provide uri 1.1.3
+package provide uri 1.1.4
