Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Mon, 19 Sep 2005 15:34:38 -0400 From: Christopher Faylor To: cygwin AT cygwin DOT com Subject: Re: Bug: Setup tool doesn't respect managed mountpoints/filesystems Message-ID: <20050919193438.GA28481@trixie.casa.cgf.cx> Reply-To: cygwin AT cygwin DOT com References: <0IN2009A5RCXL6 AT pmismtp01 DOT mcilink DOT com> <432F06FB DOT 7A5422B6 AT dessent DOT net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.8i 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/