[TransWarp] Testing Help Needed: URL contexts

Phillip J. Eby pje at telecommunity.com
Tue May 20 11:18:00 EDT 2003

At 06:40 AM 5/20/03 +0300, alexander smishlajev wrote:
>Phillip J. Eby wrote:
>>>>I just checked in a replacement for the old URL parsing mechanisms in 
>>>>PEAK, and I could really use some help with validating that the 
>>>>existing supported schemes are parsed correctly by the current CVS 
>>>>version of PEAK.
>>>FileURL does incorrectrly handle relative paths.
>>Technically, a relative path is not a valid 'file:' URL
>isn't it?  as far as i understand rfc 1808, 'file:egg;trim?warning#body' 
>is perfectly valid relative url.

Interesting.  My sources were RFC 1738 and RFC 2396.  I'll check out 
1808.  To be honest, I don't remember whether what I read said you musn't 
use them, but I do remember them saying it didn't make sense to put a 
scheme on a relative URI.

>>The correct mechanism for relative paths to use is a relative URI, not a 
>>schemed URI.  In other words href="./egg?warning" is a valid relative URI 
>>href, but href="file:./egg?warning" is invalid.
>then, how will it be possible to specify a 'logfile:' (or 'lockfile:', or 
>any other file-related) scheme?

With an absolute path.  I really don't want to support relative paths in 
those kinds of URLs.

The problem is that 'file:' syntax is ambiguous, as I found when I tried to 
write a correct parser.  Either you must force all file URLs to begin with 
'//', optional hostinfo, '/', (which means only absolute paths), or you 
must resort to heuristic trickery to "guess" what the URL means in ways 
that have nothing to do with the specifications.  :(

If there is sufficiently strong demand for relative filenames -- and I'm 
not yet sure there is -- the solution would be to make 'logfile', 
'lockfile', etc. work the way 'zconfig.schema' does.  That is, the body is 
treated as a relative filename and converted to an absolute one, unless it 
has a scheme prefix, in which case it's handled as a URL of that 
scheme.  Then, the resulting body URL is opened and adapted to the type 
denoted by the outer scheme.  IOW, the body is looked up, and then the URL 
wraps a log or lockfile instance around the resulting item.

I guess I should add this to the a3 todo list; I really don't want to mess 
with it for a2.  I'd like to get a2 out the door quickly to fix all the a1 
problems, including the broken source distribution.

More information about the PEAK mailing list