On Mon, Sep 19, 2005 at 03:10:52PM -0400, Igor Pechtchanski wrote: >On Mon, 19 Sep 2005, Brian Dessent wrote: > >> Igor Pechtchanski wrote: >> >> > OTOH, one of the changes that would be worth making in the managed mount >> > code is to leave the filename alone unless there's a clash, in which case >> > the clashing filename becomes encoded. >> >> But then any file creation/renaming operation would have to check and >> see if there was a clash first. That would kill performance. It would >> also create race conditions, like two processes trying to create >> clashing files at the same time. > >Yes, there are issues to work out here, but they are not very different >from, say, those arising when two programs try creating a file with the >same name simultaneously... In fact, the case-insensitivity of both NTFS >and VFAT plays into our hands here, as you say below: creating a new file >that differs only in case will always fail, so Cygwin simply has to encode >the file name if its creation failed. > >> > This should work since both NTFS and FAT are case-preserving >> > filesystems (of course, Cygwin will have to >> >> Preserving, yes, but not sensitive. As far as I know it is impossible >> to make (V)FAT case sensitive, so creating a new file that differs only >> in case will always fail. NTFS is only case sensitive if you use the >> Native API, otherwise it is not case sensitive either. I seem to >> remember a paragraph on MSDN that states this. >> >> Even if Cygwin did use the Native API, this would only work for NT with >> NTFS volumes. 9x/ME has no way to do this, so you're back to encoding >> filenames anyway. > >How is this relevant? I didn't say we don't need to encode filenames -- I >said that we only need to encode filenames *if* there is a clash (or the >name is special). If there is no clash, a file like "README" should be >stored as-is. > >The only caveat I see here is that now *accesses* to files on managed >mounts would have to check for case -- i.e., the managed mount code would >need to replicate some of the "check_case:strict" logic. Otherwise, >creating "README" and accessing it as "readme" would work (which we don't >want to happen).
I've been contemplating some changes to managed mode for a while now but I think I want to finally implement my mount table rewrite before I do anything to managed mode. I will probalby start working on the mount table stuff in a branch after 1.5.19 is released. cgf -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/