ntdll: Use syscalls for the file path conversion functions.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2020-08-25 13:57:02 +02:00
parent 4e5811637a
commit 482b64effd
5 changed files with 4 additions and 34 deletions

View File

@ -83,22 +83,6 @@ void init_directories(void)
} }
/******************************************************************************
* wine_nt_to_unix_file_name (NTDLL.@) Not a Windows API
*
* Convert a file name from NT namespace to Unix namespace.
*
* If disposition is not FILE_OPEN or FILE_OVERWRITE, the last path
* element doesn't have to exist; in that case STATUS_NO_SUCH_FILE is
* returned, but the unix name is still filled in properly.
*/
NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, char *nameA, SIZE_T *size,
UINT disposition )
{
return unix_funcs->nt_to_unix_file_name( nameW, nameA, size, disposition );
}
/****************************************************************** /******************************************************************
* RtlWow64EnableFsRedirection (NTDLL.@) * RtlWow64EnableFsRedirection (NTDLL.@)
*/ */

View File

@ -1609,5 +1609,5 @@
@ cdecl __wine_get_unix_codepage() @ cdecl __wine_get_unix_codepage()
# Filesystem # Filesystem
@ cdecl wine_nt_to_unix_file_name(ptr ptr ptr long) @ cdecl -syscall wine_nt_to_unix_file_name(ptr ptr ptr long)
@ cdecl wine_unix_to_nt_file_name(str ptr ptr) @ cdecl -syscall wine_unix_to_nt_file_name(str ptr ptr)

View File

@ -555,7 +555,7 @@ static ULONG get_full_path_helper(LPCWSTR name, LPWSTR buffer, ULONG size)
for (;;) for (;;)
{ {
if (!(nt_str = RtlAllocateHeap( GetProcessHeap(), 0, buflen * sizeof(WCHAR) ))) break; if (!(nt_str = RtlAllocateHeap( GetProcessHeap(), 0, buflen * sizeof(WCHAR) ))) break;
status = unix_funcs->unix_to_nt_file_name( unix_name, nt_str, &buflen ); status = wine_unix_to_nt_file_name( unix_name, nt_str, &buflen );
if (status != STATUS_BUFFER_TOO_SMALL) break; if (status != STATUS_BUFFER_TOO_SMALL) break;
RtlFreeHeap( GetProcessHeap(), 0, nt_str ); RtlFreeHeap( GetProcessHeap(), 0, nt_str );
} }
@ -892,12 +892,3 @@ NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING* dir)
RtlReleasePebLock(); RtlReleasePebLock();
return nts; return nts;
} }
/******************************************************************
* wine_unix_to_nt_file_name (NTDLL.@) Not a Windows API
*/
NTSTATUS CDECL wine_unix_to_nt_file_name( const char *name, WCHAR *buffer, SIZE_T *size )
{
return unix_funcs->unix_to_nt_file_name( name, buffer, size );
}

View File

@ -1354,8 +1354,6 @@ static struct unix_funcs unix_funcs =
virtual_release_address_space, virtual_release_address_space,
exec_process, exec_process,
server_init_process_done, server_init_process_done,
wine_nt_to_unix_file_name,
wine_unix_to_nt_file_name,
set_show_dot_files, set_show_dot_files,
load_so_dll, load_so_dll,
load_builtin_dll, load_builtin_dll,

View File

@ -28,7 +28,7 @@ struct msghdr;
struct _DISPATCHER_CONTEXT; struct _DISPATCHER_CONTEXT;
/* increment this when you change the function table */ /* increment this when you change the function table */
#define NTDLL_UNIXLIB_VERSION 95 #define NTDLL_UNIXLIB_VERSION 96
struct unix_funcs struct unix_funcs
{ {
@ -96,9 +96,6 @@ struct unix_funcs
void (CDECL *server_init_process_done)( void *relay ); void (CDECL *server_init_process_done)( void *relay );
/* file functions */ /* file functions */
NTSTATUS (CDECL *nt_to_unix_file_name)( const UNICODE_STRING *nameW, char *nameA, SIZE_T *size,
UINT disposition );
NTSTATUS (CDECL *unix_to_nt_file_name)( const char *name, WCHAR *buffer, SIZE_T *size );
void (CDECL *set_show_dot_files)( BOOL enable ); void (CDECL *set_show_dot_files)( BOOL enable );
/* loader functions */ /* loader functions */