Module: wine Branch: master Commit: c0f693f6fcd065d0c3683eb2acee3aa23e463547 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c0f693f6fcd065d0c3683eb2a...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Feb 12 20:17:28 2019 +0100
ntdll: Hardcode the path of the windows directory for redirects.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/directory.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-)
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 2719958..b46c2a6 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -2269,25 +2269,16 @@ done: */ static void init_redirects(void) { - UNICODE_STRING nt_name; - ANSI_STRING unix_name; - NTSTATUS status; + static const char windows_dir[] = "/dosdevices/c:/windows"; + const char *config_dir = wine_get_config_dir(); + char *dir; struct stat st; unsigned int i;
- if (!RtlDosPathNameToNtPathName_U( user_shared_data->NtSystemRoot, &nt_name, NULL, NULL )) - { - ERR( "can't convert %s\n", debugstr_w(user_shared_data->NtSystemRoot) ); - return; - } - status = wine_nt_to_unix_file_name( &nt_name, &unix_name, FILE_OPEN_IF, FALSE ); - RtlFreeUnicodeString( &nt_name ); - if (status) - { - ERR( "cannot open %s (%x)\n", debugstr_w(user_shared_data->NtSystemRoot), status ); - return; - } - if (!stat( unix_name.Buffer, &st )) + if (!(dir = RtlAllocateHeap( GetProcessHeap(), 0, strlen(config_dir) + sizeof(windows_dir) ))) return; + strcpy( dir, config_dir ); + strcat( dir, windows_dir ); + if (!stat( dir, &st )) { windir.dev = st.st_dev; windir.ino = st.st_ino; @@ -2295,11 +2286,12 @@ static void init_redirects(void) for (i = 0; i < nb_redirects; i++) { if (!redirects[i].dos_target) continue; - redirects[i].unix_target = get_redirect_target( unix_name.Buffer, redirects[i].dos_target ); + redirects[i].unix_target = get_redirect_target( dir, redirects[i].dos_target ); TRACE( "%s -> %s\n", debugstr_w(redirects[i].source), redirects[i].unix_target ); } } - RtlFreeAnsiString( &unix_name ); + else ERR( "%s: %s\n", dir, strerror(errno) ); + RtlFreeHeap( GetProcessHeap(), 0, dir );
}