This is the mail archive of the cygwin-developers mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Utilize reparse points for symlinks


On Sep 24 14:03, Andy Koppe wrote:
> On 23 September 2010 16:26, Corinna Vinschen wrote:
> > I experimented a bit further with reparse points, since it occured to me
> > that they are still an excellent method to implement symlinks on NTFS.
> >
> > What we can't do is to use the offical symlink reparse point introduced
> > with Windows Vista for the well-known reasons.
> >
> > However, what we *could* do is to go the official way and request a
> > Cygwin reparse point tag at Microsoft(*). ÂFor testing I implemented
> > this method locally, using the offical REPARSE_GUID_DATA_BUFFER reserved
> > for 3PPs, a reparse tag 0x20007654, and a GUID I generated by using the
> > uuidgen tool from the Microsoft SDK. ÂWorks fine, even as non-admin user,
> > unlike the native Vista symlinks.
> >
> > Why am I pursuing this at all?
> >
> > The reason is that a reparse point can be easily (read: quickly)
> > recognized by the DOS reparse attribute. ÂThe reparse point content can
> > be read without having to use ReadFile, so the access time doesn't
> > change when reading it. ÂThe reparse tag can even be recognized already
> > in readdir for free(**).
> 
> Sounds like a good idea. I assume these still wouldn't work for
> non-Cygwin programs though? Could they still support them by reading
> them themselves (using DeviceIoControl with FSCTL_GET_REPARSE_POINT)?

Yes, sure they could, the format will be documented.  But the POSIX
target path only makes sense if you know the Cygwin mount table, of
course.  That's not different from the other type of Cygwin symlinks.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]