A Wine user has requested the ability to interact with Unix symlinks from Win32 code.
Can you be more specific about the use case?
The specific desire is to be able to delete and rename the symlinks from cmd.exe. As the recently committed tests show (and 8540 implements) those functions operate on the reparse point rather than the target, much like their Unix equivalents.
I'm not sure why they want to do this rather than interact with them from a Unix script, but that's what's requested, and I broadly think that exposing Unix symlinks is reasonable, or at least worth a try.
That's largely why these are the only things I've implemented for now.
What would be the parallel in Windows? I.e. what type of reparse point would we (eventually) expose?
I'm not sure what the reparse tag would be, but probably either IO_REPARSE_TAG_SYMLINK, or maybe some custom type. I don't know in what cases it would matter, honestly; there's no Windows equivalent of readlink() other than manually calling into ntdll and parsing the target path (which would imply IO_REPARSE_TAG_SYMLINK, otherwise programs wouldn't understand it). But I also don't know in what cases it would even be useful for a program to know. I guess a file manager could display the link target.
IO_REPARSE_TAG_SYMLINK is the most equivalent on Windows; it's created by CreateSymbolicLink(), but does require adminstrator privileges. There is no CRT symlink().