https://bugs.winehq.org/show_bug.cgi?id=47100 --- Comment #3 from Erich E. Hoover <erich.e.hoover(a)gmail.com> --- (In reply to Louis Lenders from comment #2)
I'm looking into a possibly related issue at the moment, does it work if the >destination exists?
Do you mean like below? It makes a difference apparently but it looks weird to me: File: foo -> .///././/////////////////////////.//.//bar ...
Yes, that is exactly what I mean. It looks like I made a mistake in validating the destination path and am currently requiring it to exist before it will make a symlink/junction point. If you wouldn't mind testing, you should be able to fix it by replacing this line in FILE_CreateSymlink (dlls/ntdll/file.c): if ((status = wine_nt_to_unix_file_name( &nt_dest, &unix_dest, FILE_OPEN, FALSE ))) with these two: status = wine_nt_to_unix_file_name( &nt_dest, &unix_dest, 0, FALSE ); if (status != STATUS_SUCCESS && status != STATUS_NO_SUCH_FILE) The reason it looks "weird" is that it is encoding the Reparse Tag into the symlink as "binary" (no period = 0, period = 1). This allows us to tell the difference between a Junction Point (IO_REPARSE_TAG_MOUNT_POINT) and an NT Symlink (IO_REPARSE_TAG_SYMLINK). This wouldn't matter so much if the format of the returned data was the same, but the two reparse types return incompatible structures. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.