I see this patch didn't make it to URI-1.19, is it for some reason or
was it just forgotten (I haven't seen any replies)?   I'm inlining the
patch against URI-1.19 below.

On Fri, 2002-03-29 at 03:48, Ville Skytt� wrote:

> There seems to be a bug in URI::file (from URI-1.18); the host() is not
> unescaped as the documentation of URI says.
> 
> Here's how to reproduce:
> 
> $ perl -MURI -e 'print URI->new("file://foo bar/baz/")->host(), "\n"';
> foo%20bar
> $
> 
> I'd expect
> foo bar
> ....as the output.
> 
> Applying this patch does not break tests, but triggers an
> Use of uninitialized value in substitution (s///) at
> blib/lib/URI/Escape.pm line 161.
> ....with t/old-base.t.  Maybe this should be avoided in URI::Escape?
> 
> While I was at it, added a $VERSION to URI/file.pm and trimmed some
> trailing whitespace.

--- URI/file.pm.orig    Fri Apr  7 15:58:06 2000
+++ URI/file.pm Thu May  9 23:02:45 2002
@@ -1,10 +1,13 @@
 package URI::file;
 
 use strict;
-use vars qw(@ISA);
+use vars qw(@ISA $VERSION);
 
 require URI::_generic;
 @ISA = qw(URI::_generic);
+$VERSION = sprintf("%d.%02d", q$Revision: 1.00 $ =~ /(\d+)\.(\d+)/);
+
+use URI::Escape qw(uri_unescape);
 
 # Map from $^O values to implementation classes.  The Unix
 # class is the default.
@@ -33,7 +36,7 @@
 }
 
 sub path { shift->path_query(@_) }
-sub host { shift->authority(@_)  }
+sub host { uri_unescape(shift->authority(@_)) }
 
 sub new
 {
@@ -89,7 +92,7 @@
 
  $u3 = URI::file->new($path);
  $u4 = URI::file->new("c:\\windows\\", "win32");
- 
+
  $u1->file;
  $u1->file("mac");
 
@@ -213,7 +216,7 @@
   <undef>      <==      /
   foo/         <==      file:/foo%2F
   ./foo.txt    <==      file:/.%2Ffoo.txt
-  
+
 Note that if you want a relative URL, you *must* begin the path with a :.  Any
 path that begins with [^:] will be treated as absolute.
 

Cheers,
-- 
Ville Skytt�
[EMAIL PROTECTED]

Reply via email to