UNIX error message set wrong on open "file1/file2"

scw at UCLA-LOCUS.ARPA scw at UCLA-LOCUS.ARPA
Mon Jul 9 22:01:00 AEST 1984


From:  Steve Woods <cepu!scw at UCLA-LOCUS.ARPA>

    >From: decvax!linus!utzoo!utcsrgv!dave at UCB-VAX.ARPA
    >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").

    >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).

Seems that it checks for the access bits first and only then trys to access
a directory. The follwoing thes was run under v7.

This program:

char file1[]="test.x/foo";
char file2[]="test.f/foo";
main(argc,argv)
int argc;
char **argv;
{
	if(open(file1,0) < 0)perror(file1);
	if(open(file2,0) < 0)perror(file2);
}

Run on this directory:
-rwxrwxr-x 1 scw        1622 Jul  9 07:51 test
-rw-rw-r-- 1 scw         190 Jul  9 07:51 test.c
-rw-rw-r-- 1 scw           0 Jul  9 07:47 test.f
-rwxrwxr-x 1 scw           8 Jul  9 07:46 test.x

Produces the following output:
test.x/foo: Not a directory
test.f/foo: Permission denied
------
Stephen C. Woods (VA Wadsworth Med Ctr./UCLA Dept. of Neurology)
uucp:	{ {ihnp4, uiucdcs}!bradley, hao, trwrb, sdcsvax!bmcg}!cepu!scw
ARPA: cepu!scw at ucla-cs CORRECTED location: N 34 3' 9.1" W 118 27' 4.3"



More information about the Comp.unix.wizards mailing list