Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 May 1995 16:22:23 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        Bernard.Steiner@Germany.EU.net, terry@cs.weber.edu
Cc:        freebsd-bugs@FreeBSD.org
Subject:   Re: strange symlinks
Message-ID:  <199505100622.QAA01050@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> The next one may be a general 4.4 problem...
>> assumption: /tmp/foo does not exist, /tmp/bar is a symlink to /tmp/foo.
>> chdir("/tmp/bar") fails with ENOENT, but at the same time
>> mkdir("/tmp/bar", 0x777) fails with EEXIST.

>I think this is a generic result of the path component item evaluation
>order.  I guess the only thing to say is that "according to the code,
>this is correct behaviour"  8-).

It's because chdir follows symlinks but mkdir doesn't.  chdir operates on
directories while mkdir operates on directory entries.  The directory
/tmp/foo doesn't exist so the error for chdir is ENOENT but the directory
entry /tmp/bar exists so the error for mkdir is EEXIST.

>> Third, whatever happened to the fchdir() syscall that I vaguely remember
>> having had in (at least) 386BSD0.1 ?

>It had *better* still be there!  I've been using it with a couple of

It hasn't changed.  See `man fchdir'.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199505100622.QAA01050>