Subject: Re: DOS shortname and cygwin I/O
From: Andrew Chang <[email-masked]>
To: [email-masked], Igor Pechtchanski <[email-masked]>
Cc: [email-masked]
Date: Fri, 22 Nov 2002 16:17:29 -0800

On Friday 22 November 2002 04:10 pm, Igor Pechtchanski wrote:
> On Fri, 22 Nov 2002, Andrew Chang wrote:
> > Hello,
> >
> > I just noticed that cygwin seems to get confused when we do a
> > cd to dos-short-pathname.  It is easy to reproduce:
> >
> > a) Install cygwin to c:/Programme/cygwin
> > b) make sure you mount / in binary mode
> > c) mkdir c:/Programme/cygwin/tst
> > c) cd c:/Programme/cygwin/tst
> > d) echo "XXX" > file1
> > e) od -c file1  # this should show file1 with '\n' line termination
> > f) cd c:/Progra~2/cygwin/tst    # C:/Progra~2 is the shortname of
> > c:/Programme g) echo "XXX" > file2
> > h) od -c file2  #  this should show file2 with a \r\n line termination
> >
> > I would expect the "echo" command to behave the same way, regardless of
> > how I cd there. Is there a reason for doing otherwise ?
> >
> > Thanks
> > Andrew Chang
>
> I don't know if it's a bug, but I believe I can explain what's happening:
>
> When a file is opened in Cygwin, and the mode (binary or text) is not
> specified, the mount table is consulted, and the first matching entry
> determines the type of mount (binary or text), and thus the mode.
> If the directory is not found in the mount table, it is assumed to be
> mounted through /cygdrive.
>
> What's happening in your case is that Cygwin doesn't match c:/Progra~2
> with the c:/Programme in the mount table, and thus assumes that it is a
> text mount (because /cygdrive is text).  The fact that you end up in the
> same directory is really irrelevant (that's Windows' doing).  Cygwin isn't
> aware of DOS short names being equivalent to Windows long names.

Thanks for your response,
Right, that is my guess too. I am thinking that the mount table could store 
both the long name and the short name. This should gives cygwin enough infomation
to do the "right thing".

>
> So, to answer your question, echo *does* behave the same way - it only
> outputs a newline.  Writing the file to disk, however, *does not* behave
> the same way, and depends on the type of mount, which, in turn, depends on
> which entry in the mount table the directory matches.
>
> Hope this helps,
> 	Igor

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/