This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: Absolute URL parsing bug
- From: Andrew Haley <aph at redhat dot com>
- To: Per Bothner <per at bothner dot com>
- Cc: GCJ Patches <java-patches at gcc dot gnu dot org>, classpath patches <classpath-patches at gnu dot org>
- Date: Sat, 2 Jul 2005 10:39:30 +0100
- Subject: Re: Absolute URL parsing bug
- References: <17093.29654.946751.823936@zapata.pink><42C5A93A.3010805@bothner.com>
Per Bothner writes:
> Andrew Haley wrote:
> > This URL is an absolute URL because its path begins with a "/":
> >
> > "jar:file:/usr/src/redhat/BUILD/jonas-4.3.3/jonas/output/JONAS_4_3_3/examples/webservices/beans/ws/temp/ejbjars/ws.jar!/META-INF/wsdl/ssbEndpoint.wsdl"
> >
> > [ An absolute file URL can look like:
> >
> > absoluteURI = "file" ":" abs_path
> > abs_path = "/" path_segments
> >
> > That is, there is no need for "//".
>
> I don't see that in any of the specs.
I got it from RFC 2396. Which I might have read wrongly, of course.
> Technically, "file:/tmp/foo.html" is not a valid URI, as far as I
> can tell. I notice that firefox rewrites it (in the navigation
> bar) to "file:///tmp/foo.html".
>
> Now in practice we may want to allow "file:/tmp/foo.html", but it should
> be viewed as an unofficial short-hand for "file:///tmp/foo.html".
>
> > And indeed, the URL spec in the
> > SDK docs says 'If the spec's path component begins with a slash
> > character "/" then the path is treated as absolute...' ]
>
> The *path* is absolute, but the URI isn't.
>
> This matters when resolving a relative URL against a base URI, such as
> he URL of the containing document.
>
> If we have a base URI "http://bar.com/baz/index.html" and a reference
> "/tmp/foo.html" then the resolved URI is "http://bar.com/tmp/foo.html".
>
> > But we parse the spec looking for "//" to determine if a URL is
> > absolute,
>
> A URL is absolute *only* if it has a "scheme".
I don't really understand what you're suggesting. Would it be OK to
special-case "file" URIs so that "file:/" is rewritten to ""file:///" ?
I have no opinions about the syntax of URIs, I only want to make
real-world applications work. In this case we have to guess what Java
libraries are doing.
Andrew.