Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!rutgers!ames!lll-tis!ptsfa!hoptoad!unisoft!mtxinu!ed From: ed@mtxinu.UUCP (Ed Gould) Newsgroups: comp.unix.wizards Subject: Re: Symbolic Links Message-ID: <480@mtxinu.UUCP> Date: Wed, 31-Dec-69 18:59:59 EDT Article-I.D.: mtxinu.480 Posted: Wed Dec 31 18:59:59 1969 Date-Received: Thu, 27-Aug-87 07:21:05 EDT References: <8731@brl-adm.ARPA> <2789@ulysses.homer.nj.att.com> <1781@munnari.oz> <2838@ulysses.homer.nj.att.com> <1793@munnari.oz> <2854@ulysses.homer.nj.att.com> Reply-To: ed@mtxinu.UUCP (Ed Gould) Organization: mt Xinu, Berkeley Lines: 59 >This argument, that ".." is a physical link (rather than a logical one) >falls appart at mount points, where the parent directory and where ".." points >are different. It also happens at remote file system mount points, for >the same reason. So it's not so "simple and consistent". It now requires >some education about file systems, mount points, and distributed file >systems. The list seems to keep growing. It doesn't fall apart anywhere on my system (4.3BSD + NFS) except that / is a special case: /.. == / >This is easy. The intention is to make ".." behave as a logical operator. >This means that > >1: if I do "cd /usr/include/sys" and then "cd ..", I end up in /usr/include > no matter what. > >2: if I find a ".." in a pathname, it refers to the logical parent, > not the physical one. Thus, while in /usr/include/sys, "ls .." will produce > a directory listing of /usr/include. > >The semantics are very clean and simple. Simple, perhaps, but no more so than the current BSD symlinks. What's cleaner about it? >You can't achieve 2: above unless it's done in the kernel. No argument. >An implementation is not only possible, it already exists. I wouldn't be >defending this if I didn't have the opportunity to use it and test it and >get the feeling as to whether it's the right thing to do or not. Unless the kernel implements carrying an arbitrarily-long string with each process, then I claim that the implementation is broken. Consider the following program, with DEPTH suitably large: main() { int i; for(i = 0; i < DEPTH; i++) { mkdir("subdir"); symlink("subdir", "symlink"); chdir("symlink"); } chdir("../../.."); /* * Where am I now and how did I get there??? */ } (This example could be improved, but I believe that it illustrates my point.) -- Ed Gould mt Xinu, 2560 Ninth St., Berkeley, CA 94710 USA {ucbvax,decvax}!mtxinu!ed +1 415 644 0146 "A man of quality is not threatened by a woman of equal022ran