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