This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PLEASE TEST YOUR FS (was Re: 1.7.1: cvs version built in is unstable)


On Apr 23 10:45, Corinna Vinschen wrote:
> On Apr 22 19:51, Corinna Vinschen wrote:
> > On Apr 22 14:12, Corinna Vinschen wrote:
> > > Thank you.   Oh well.  When trying to open the file to check for its
> > > existance, the NT status code is STATUS_OBJECT_NAME_NOT_FOUND which is
> > > equivalent to the POSIX errno ENOENT, "No such file or directory".
> > > 
> > > Only afterwards, when trying to create the file, the status code is
> > > STATUS_OBJECT_NAME_INVALID.  Too late for Cygwin.
> > 
> > I've just applied a patch which is supposed to fix this problem.
> > 
> > The core component which evaluates a file and performs basic checks now
> > handles the case STATUS_OBJECT_NAME_NOT_FOUND specially.  It checks if
> > the filename has leading spaces and/or trailing dots and spaces.  If so,
> > it checks the filesystem.  If it's one of the known FSes with broken
> > (aka DOS-only) path handling, it removes the offending leading spaces
> > and trailing dots and spaces and tries again.
> > 
> > So this:
> > 
> >   $ touch "  abc    ...   "
> > 
> > will create the file
> > 
> >   "  abc    ...   "
> > 
> > for instance on NTFS or FAT, but it will create the file
> > 
> >   "abc"
> > 
> > on NetApp, NWFS and other filesystems recognized as CIFS (but not Samba).

I didn't like this solution at all.  I just applied another patch which
handles that differently.  Instead of stripping the leading spaces and
trailing dots and spaces, they now get converted the same way as
described in
http://cygwin.com/cygwin-ug-net/using-specialnames.html#pathnames-specialchars

So the offending dots and spaces are converted into the UNICODE private
use area instead, and transparently converted back to dots and spaces
when accessing them via Cygwin.  This allows to keep the filenames
unchanged from the user's point of view.  The file

  "  abc    ...   "

is *still* the file

  "  abc    ...   "

even on the broken filesystems.

Again I tested this change on NTFS with a little tweak to the code.  If
you NetApp and NWFS users please test the next developer's snapshot (the
next one after 2010-04-22), I would be most grateful.


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]