[net.cog-eng] Behaviour of ".." with symbolic links

kpv@ulysses.UUCP (Phong Vo) (03/27/84)

The ".." operator in pre-4.2BSD UN*Xes is inherently a rooted tree operator
because in a rooted tree parental relationship is functional. That is, the map
parent(x) always defines a "unique" value for any given file or directory x.
Note that "unique-ness" is the desired property. With symbolic links, the
directory structure becomes a directed graph, and uniqueness of parents of
nodes can no longer be guaranteed unconditionally but must be parametrized
in some ways. In my experience with a rather different interactive network
traversal problem, the following strategy seems to work best:
	1. Assume that the network is rooted (eg, "/") and the root is the entry
	   point into the network.
	2. Keep the stack of nodes traversed from the root to the current node.
	3. Define parent(AnyNodeOnTheStack) to be its predecessor on the stack.
The above strategy works well with step-wise movements in the network.
Since the only other way to `cd' in UNIX is to specify the full path name,
the stack can be recalculated when such a move is made.
However, the problem as I see it is not in changing csh, ksh,
and other programs to reflect the desired effect of ".." whatever that may be.
Rather, the changes ought to be implemented at the level of chdir(),
open(), creat(), etc. since it is really these routines that interpret
the directory structure.
	Phong Vo