Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!ittvax!dcdwest!sdcsvax!sdcrdcf!hplabs!sri-unix!cepu!scw@UCLA-LOCUS.ARPA From: scw@UCLA-LOCUS.ARPA Newsgroups: net.unix-wizards Subject: re: UNIX error message set wrong on open "file1/file2" Message-ID: <1774@sri-arpa.UUCP> Date: Mon, 9-Jul-84 08:01:00 EDT Article-I.D.: sri-arpa.1774 Posted: Mon Jul 9 08:01:00 1984 Date-Received: Fri, 13-Jul-84 01:22:10 EDT Lines: 45 From: Steve Woods >From: decvax!linus!utzoo!utcsrgv!dave@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@ucla-cs CORRECTED location: N 34 3' 9.1" W 118 27' 4.3"