Hi all,

I was trying to search for any description helping me understand in what I
see, but actually I didn't find any, so I'm here. I discovered it by using
automake-1.11, because it uses relative paths a lot. So my simplified
testcase is as follows:

Have a directory structure x/y and x/z/a. Have a symbolic link from x/y/z
that points to x/z.

  mkdir -p x/y
  mkdir -p x/z/a
  ln -s ../z x/y/z

Now go into x/y/z/a and try to create directory like that:

  cd x/y/z/a
  mkdir ../dir_xyz
  mkdir ../../dir_xy
  mkdir ../../../dir_x

I would expet that there would be a directory like this:

  x/dir_x
  x/y/dir_xy
  x/y/z/dir_xyz (x/z/dir_xyz)

But the result is completely different:

  dir_x
  x/dir_xy
  x/y/z/dir_xyz (x/z/dir_xyz)

So when you want to create a directory in the parent structure from within
the symbolic link, you will fail in doing so, because the symbolic link
would be resolved during walking through parents, so you can get to
completely different tree while creating your directory. It looks like a
bug, because it is nowhere documented to behave like that (and the behaviour
is strange by itself).

Verified on Debian 4.0/RedHat 5.4 with coreutils 5.97 and on Gentoo with
coreutils 8.12.

Regards,
Oldrich.

Reply via email to