Re: how should remote path names be handled?
Guido.van.Rossum@cwi.nl
Message-id: <9304222211.AA01174=guido@voorn.cwi.nl>
To: timbl@nxoc01.cern.ch (Tim Berners-Lee)
Cc: fine@cis.ohio-state.edu, www-talk@nxoc01.cern.ch
Subject: Re: how should remote path names be handled?
In-reply-to: Your message of "Thu, 22 Apr 1993 23:01:36 MET."
<9304222101.AA07208@ nxoc01.cern.ch >
From: Guido.van.Rossum@cwi.nl
X-Organization: CWI (Centrum voor Wiskunde en Informatica)
X-Address: P.O. Box 4079, 1009 AB Amsterdam, The Netherlands
X-Phone: +31 20 5924127 (work), +31 20 6225521 (home), +31 20 5924199 (fax)
Date: Fri, 23 Apr 1993 00:11:55 +0200
Sender: Guido.van.Rossum@cwi.nl
Tim BL writes:
>This is always what you expect, except that it might
>surprise you if you don't think too hard that in directory
>/a/fred, "bert" refers to /a/bert, not /a/fred/bert, so
>/a/fred/bert should be referred to as "fred/bert" or "./bert".
>Anyway, you are right, and if there are browsers which do otherwise
>that is their problem, unless I've goofed.
The last example is really worrysome! If you are trying to follow
UNIX conventions, "./bert" should refer to the same thing as "bert",
so it would refer to "/a/bert"! What does the library code actually
do? (I don't have it handy!)
Another question about this subject is resolution of "../" prefixes.
In the above example, what does "../foo" refer to? I'd hope "/foo".
Also, who is supposed to do the ".." resolution -- the client or the
server?
And what about "/../" in the middle of a path? Does
"/foo/bar/../bletch" always mean "/foo/bletch" (if "/foo/bar" were a
symbolic link to a directory, it won't on UNIX, meaning that a client
doing "../" stripping might wind up at a different place than a server
blindly following the path (which might be dangerous if there are more
"../" parts than allowed -- I don't know if servers allow this).
Finally, I believe there are (or were) some gateway servers on the net
that are confused about this themselves: when in /a/b and attempting
to generate a relative reference to c, they would end up referring to
/a/b/c instead of /a/c, or when attempting to refer one level up they
would point to /a/a instead of /a. (I seem to remember the CERN Emacs
Info gateway did this -- can't find where it is right now...)
--Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl>