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