[Bug 47100] Simple command that needs CreateSymbolicLinkW doesn`t work anymore in Staging-4.7
wine-bugs at winehq.org
wine-bugs at winehq.org
Tue Apr 30 09:58:11 CDT 2019
https://bugs.winehq.org/show_bug.cgi?id=47100
--- Comment #3 from Erich E. Hoover <erich.e.hoover at 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.
More information about the wine-bugs
mailing list