[net.bugs] UNIX error message set wrong on open "file1/file2"

dave@utcsrgv.UUCP (Dave Sherman) (07/05/84)

Running 4.1, I tried to do
	tail foo/bar
and got
	foo/bar: Permission denied
which surprised me, since I was in my own directory. Turns out
that "foo" exists, but is a file, not a directory. The error
value really should be ENOENT ("No such file or directory") rather
than EACCES ("Permission denied").

This doesn't show up running tail(1) on v7, since v7 tail doesn't
call perror, but a test of perror revealed the same treatment.

Any reason why open("file/file") should return EACCES? The v7
manual page for intro(2) says EACCES means "An attempt was made
to access a file in a way forbidden *by the protection system*"
(emphasis mine).


Dave Sherman
Toronto
-- 
 {allegra,cornell,decvax,ihnp4,linus,utzoo}!utcsrgv!dave
or
 David_Sherman%Wayne-MTS%UMich-MTS.Mailnet@MIT-Multics.ARPA

opus@drutx.UUCP (ShanklandJA) (07/07/84)

    > Any reason why open("file/file") should return EACCES [rather
    > than ENOENT if the first file exists, but is not a directory]?

Yeah (or at least, sort of).  If the first file didn't have execute
permission set, it wouldn't be "searchable" as a directory.  Granted,
it would probably be clearer if the kernel checked whether 'file1'
was a directory BEFORE checking the permission bits to see if it could
be searched, rather than after; but I'll be willing to bet that's exactly
what's happening.

Jim Shankland
..!ihnp4!druxy!opus