realpath issue with native[strict] symlinks

Corinna Vinschen corinna-cygwin@cygwin.com
Thu May 6 17:44:42 GMT 2021


On May  4 22:52, Orgad Shaneh via Cygwin wrote:
> On Tue, Apr 27, 2021 at 8:44 AM Orgad Shaneh <orgads@gmail.com> wrote:
> >
> > On Apr 19 12:58, Corinna Vinschen via Cygwin wrote:
> > > On Apr 18 10:59, Orgad Shaneh via Cygwin wrote:
> >
> > > I was going to write:
> > >
> > >   Nothing we can do about without re-implementing Cygwin's path handling
> > >   from scratch.  For historical reasons, POSIX paths are evaluated in a
> > >   non-POSIXy manner from right to left.  If the resulting path is an
> > >   existing path, the assumption is that no inner path component is a
> > >   symlink.  That's true as long as Windows didn't support
> > >   symlinks/junctions and Cygwin didn't support them.
> > >
> > > But now I'm writing this:
> > >
> > >   Probably I have a workaround for this problem.  I added a certain test
> > >   to the function checking the outer path component, so the checks for
> > >   path validity don't stop at the outer path component, just because
> > >   it's a valid Windows path.
> > >
> > > I pushed the patch and uploaded new developer snapshots to
> > > https://cygwin.com/snapshots/
> > >
> > > Please give them a try.
> >
> > Tried now, and it works for me. Thanks a lot!
> >
> > - Orgad
> 
> 
> Hi Corinna,
> 
> This change breaks access to subst drives. Reported on MSYS2:
> https://github.com/msys2/msys2-runtime/pull/38#issuecomment-832160980
> 
> Can you please have a look?

Works fine for me:

  $ subst T: C:\\cygwin64\\home\\corinna\\tmp
  $ subst
  T:\: => C:\cygwin64\home\corinna\tmp
  $ ls /cygdrive/t
  bar  cygwin  foo  gawk-5.1.0  ocaml  openssh-8.5p1  recurse  tst

TAB completion works, too.


Corinna


More information about the Cygwin mailing list