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>