URLStreamHandler.java (parseURL): Canonicalize file portion of URL in addition to spec for file: protocol.

* java/net/URLStreamHandler.java (parseURL): Canonicalize
	file portion of URL in addition to spec for file: protocol.

From-SVN: r84157
This commit is contained in:
Mohan Embar 2004-07-06 16:27:26 +00:00 committed by Mohan Embar
parent 88a2ae206e
commit c09bade662
2 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2004-07-06 Mohan Embar <gnustuff@thisiscool.com>
* java/net/URLStreamHandler.java (parseURL): Canonicalize
file portion of URL in addition to spec for file: protocol.
2004-07-05 Anthony Green <green@redhat.com>
* java/io/File.java (toURI): Merge from Classpath.

View File

@ -1,5 +1,5 @@
/* URLStreamHandler.java -- Abstract superclass for all protocol handlers
Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@ -131,8 +131,12 @@ public abstract class URLStreamHandler
String query = null;
// On Windows we need to change \ to / for file URLs
if (url.getProtocol().equals("file"))
spec = spec.replace(File.separatorChar, '/');
char separator = File.separatorChar;
if (url.getProtocol().equals("file") && separator != '/')
{
file = file.replace(separator, '/');
spec = spec.replace(separator, '/');
}
if (spec.regionMatches(start, "//", 0, 2))
{
@ -216,7 +220,7 @@ public abstract class URLStreamHandler
{
boolean endsWithSlash = file.charAt(file.length() - 1) == '/';
file = new File(file).getCanonicalPath();
file = file.replace(File.separatorChar, '/');
file = file.replace(separator, '/');
if (endsWithSlash && file.charAt(file.length() - 1) != '/')
file += '/';
}