Messages in this thread | | | Date | Tue, 23 Nov 2004 15:16:51 +0530 | From | Amit Gud <> | Subject | Re: file as a directory |
| |
On Mon, 22 Nov 2004 20:05:25 +0100 (MET), Jan Engelhardt <jengelh@linux01.gwdg.de> wrote: > >>(Hint - "file as directory" broke a number of programs that didn't > >>expect that a file *could* be a directory, when run on a reiser4 > >>filesystem...) > > > >It broke extraordinarily few. > > (The fewer the better.) > > That's good news, and frankly, I did not expect anything else. That's because > either programs definitely know that "it" is a file/directory because they just > mkdir'ed or so, or they implement correct error checks, e.g. the user just > created a directory and we check back (i.e. race protection). >
Correct me if I'm wrong, but the best way I know whether a file should be treated as directory or as a file (atleast how I've implemented it) depends upon the context (how the file is accessed) in the user-space and this context is reflected in the kernel space in the flags of the struct nameidata. So ...
---- /* check if the archive is a path component or if last component with slash */ flags = (nd->flags & LOOKUP_CONTINUE) || (nd->flags & LOOKUP_DIRECTORY); if(flags) /* directory */ else /* file */
----
> What I am worried about is the opendir() libc call, which AFAIK does this: > fd = open("directory", myflags | O_DIRECTORY) >
No more worries! Am I missing something?
AG -- May the source be with you. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |