This is the mail archive of the
mailing list for the Cygwin project.
Re: Howto get Cygwin<->Linux interoperability on NTFS filesystems (symbolic links issue)
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Wed, 26 Aug 2009 21:59:58 +0200
- Subject: Re: Howto get Cygwin<->Linux interoperability on NTFS filesystems (symbolic links issue)
- References: <loom.20090826T211539email@example.com>
- Reply-to: cygwin at cygwin dot com
On Aug 26 19:17, Waldemar Rachwal wrote:
> Cygwin 1.7 has *read* support of symlinks created by Vista+, but *no write* for
> reasonable reasons (http://www.cygwin.com/ml/cygwin/2007-01/msg00936.html).
> That's not bad, as working in dual-boot system, when it comes to switch to
> Linux, I would convert all cygwin-like symlinks to NTFS's native symlinks that
> appeared along with Vista.
> I was so naive that NTFS drivers under Linux will write Windows-like symlinks,
> but simply they don't (Linux should have no problems that Cygwin faces with
> elevating admin priviledges running under Vista). What mentioned drivers (ntfs,
> ntfs-3g) create, look very similar to Cygwin - plain files with system attribute
> set and contents with a target path the symlink points to (as unicode string).
> But the formats differ slightly. While Cygwin's symlinks starts with !<symlink>,
> those from linux drivers start with IntxLNK - so called Interix links, plus
> other minor differencies.
> My question is: why Cygwin invented its own format (if not, sorry ;)? Or should
> rather Linux take Cygwin's format? Even Linux did later, isn't Interix some "old
Development of Cygwin and Interix almost started in parallel (1995 vs.
1996). Due to the lack of Windows symlink support every project had to
invent its own symlink format. Not knowing of each other project the
results differed unfortunately. Today we have at least six different
symlink formats on Windows:
1. Original Cygwin symlinks ("!<symlink>" header, SYSTEM DOS attribute,
multibyte target filename)
2. Cygwin 1.7 symlinks ("!<symlink>" header, SYSTEM DOS attribute,
UTF-16 target filename starting with BOM)
3. Interix symlinks ("IntxLnk\001" header, SYSTEM DOS attribute,
UTF-16 target filename w/o BOM)
4. U/Win symlinks (R/O shortcuts with distinct layout different from
native Explorer layout)
5. Native NTFS symlinks since Windows Vista
6. Native NFS symlinks via the Microsoft NFS client.
Of these six types, five are supported by Cygwin, 1, 2, 4, and 6 are
supported R/W, 5 is supported R/O. Only the Interix format isn't
supported right now. It would be no big problem to support Interix
symlink R/O support as well. After all this time without Interix
symlink support, I don't think it's such a pressing problem, though.
I'll add it to my TODO list for the time after 1.7.1 has been released.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple