Cygwin tool to differ junctions from soft links?

Thomas Wolff towo@towo.net
Fri Nov 17 05:54:40 GMT 2023



Am 16.11.2023 um 21:30 schrieb Brian Inglis via Cygwin:
> On 2023-11-16 11:55, matthew patton via Cygwin wrote:
>> On Thursday, November 16, 2023 at 03:50:24 AM EST, Andrey Repin wrote:
>>>> Does Cygwin have a command line tool (Scriptable!) which can be 
>>>> used to
>>>> differ between soft links and Windows junctions?
>
> Distinguishing between types of Windows reparse points is not a POSIX 
> or emulation function, so not of interest to Cygwin developers.
>
> I thought about it when support was added, but then realized there was 
> no nice place to add it within the platform, without going the 
> non-portable Windows specific utility route, as in lsattr.
>
> You could in a function or script by running lsattr -d which seems to 
> fail on reparse points, then ls -dl which shows a Symbolic Link with a 
> relative path, and a Junction with an absolute path, although it could 
> just be a Symbolic Link with an absolute path.
lsattr has an explicit flag:
              'r', 'Reparse':       file or directory that has a reparse 
point
I don't know whether it's the same as a junction, otherwise a 'j' flag 
could be added.

>
> Perhaps something like the following would be useful to Windows users 
> who want to know this stuff:
>
>     https://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
>
>>> It would be easier to help you, if you specify the purpose of your
>>> request. I.e. what you want to achieve with such tool.
>> AFAIK no. what I do is re-implement 'ln' with a wrapper because the 
>> Cygwin
>> behavior (Junctions) was driving me up the wall.
>> https://github.com/tb3088/shell-environment/blob/ccf7aa161899c2c4ebe2d9e980e674bc726a3ef3/.functions_os.CYGWIN_NT#L9 
>>
>
> Cygwin never creates Windows Directory or Filesystem Junction reparse 
> points, and by default it uses its own version of Unix path symlink 
> files, preceded by a flag ("magic cookie") value, and with system 
> attribute, to allow compatibility with FAT file system limitations, or 
> else NFS symlinks on NFS filesystems.
>
> CYGWIN env var settings allow creation of Windows shortcuts and 
> symbolic link reparse points instead of its default (equivalent to 
> winsymlinks:sys), when supported by the file system and Windows release:
>
>     https://cygwin.com/cygwin-ug-net/using-cygwinenv.html
>
>     https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks
>



More information about the Cygwin mailing list