Design issue with new MS-DOS style path warning?

Dave Korn dave.korn.cygwin@googlemail.com
Fri Jan 22 16:53:00 GMT 2010


On 22/01/2010 16:23, Eric Vautier wrote:

> Let me confirm that the script has not changed at all, and used to
> work fine under the previous version. You'll agree that arriving at a
> C:/cygdrive/c/... path is a little odd, regardless of setup. 

  Nope, it's actually entirely sensible!  Because ":" is not a drive-letter
separator in Linux; it's a separator between path-list components, like ";" is
under DOS.

  So if you say "C:\foo\bar" in a path-list context, you are specifying a list
of two paths: "C" and "\foo\bar".  Cygwin (or whatever utility is doing the
work) translates each one separately and then reconcatenates them.  "C" in DOS
is a relative path to any subdirectory called "C" in the current dir; that
stays the same in unix syntax.  "\foo\bar" in DOS is an absolute path relative
to the root of the current drive, which, being your C drive, translates into
/cygdrive/c/foo/bar.  These two are then reconcatenated into a path list
separted by colons.

  The older version was buggy in this regard, it handled dos paths correctly
at the expense of making a mess of colon-separated posix-style path lists
sometimes.  That's why the behaviour has changed, because posix compatibility
wins out over windows compatibility as a design goal of cygwin, and that's why
there's now a warning, to let you know that what you are doing is not going to
work how you want it to.

    cheers,
      DaveK


--
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



More information about the Cygwin mailing list