delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/11/22/19:17:47

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-Id: <200211230017.gAN0HUX07741@work.bitmover.com>
From: Andrew Chang <awc AT bitmover DOT com>
To: cygwin AT cygwin DOT com, Igor Pechtchanski <pechtcha AT cs DOT nyu DOT edu>
Subject: Re: DOS shortname and cygwin I/O
Date: Fri, 22 Nov 2002 16:17:29 -0800
Cc: cygwin AT cygwin DOT com
References: <Pine DOT GSO DOT 4 DOT 44 DOT 0211221900270 DOT 4275-100000 AT slinky DOT cs DOT nyu DOT edu>
In-Reply-To: <Pine.GSO.4.44.0211221900270.4275-100000@slinky.cs.nyu.edu>
MIME-Version: 1.0
X-MailScanner: Found to be clean

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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019