mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
ntdll-avoid-fstatat: Remove patch set.
This was written for the Mac OS build machine maintained by Michael Müller and Sebastian Lackner. That machine is out of service as of Wine 5.8. The current plan is to ensure the replacement has a recent enough SDK to use fstatat().
This commit is contained in:
parent
0a85e3f331
commit
762c0e7040
@ -1,77 +0,0 @@
|
||||
From 48d00ccab7205412a743438ae16fb209de9ff523 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Sat, 28 Mar 2020 13:17:25 -0500
|
||||
Subject: [PATCH] ntdll: Avoid fstatat().
|
||||
|
||||
---
|
||||
dlls/ntdll/directory.c | 3 +--
|
||||
dlls/ntdll/file.c | 20 ++++++++++++++++++--
|
||||
dlls/ntdll/ntdll_misc.h | 1 +
|
||||
3 files changed, 20 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
|
||||
index d18df38f626..eb33c7f541a 100644
|
||||
--- a/dlls/ntdll/directory.c
|
||||
+++ b/dlls/ntdll/directory.c
|
||||
@@ -217,14 +217,13 @@ static const BOOL is_case_sensitive = FALSE;
|
||||
|
||||
static struct file_identity windir;
|
||||
|
||||
-static RTL_CRITICAL_SECTION dir_section;
|
||||
static RTL_CRITICAL_SECTION_DEBUG critsect_debug =
|
||||
{
|
||||
0, 0, &dir_section,
|
||||
{ &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
|
||||
0, 0, { (DWORD_PTR)(__FILE__ ": dir_section") }
|
||||
};
|
||||
-static RTL_CRITICAL_SECTION dir_section = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||
+RTL_CRITICAL_SECTION dir_section = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||
|
||||
|
||||
/* check if a given Unicode char is OK in a DOS short name */
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 9997a5e1cda..5d02f2fb181 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -138,8 +138,24 @@ static inline ULONG get_file_attributes( const struct stat *st )
|
||||
static BOOL fd_is_mount_point( int fd, const struct stat *st )
|
||||
{
|
||||
struct stat parent;
|
||||
- return S_ISDIR( st->st_mode ) && !fstatat( fd, "..", &parent, 0 )
|
||||
- && (parent.st_dev != st->st_dev || parent.st_ino == st->st_ino);
|
||||
+ BOOL ret = FALSE;
|
||||
+ int cwd;
|
||||
+
|
||||
+ if (!S_ISDIR( st->st_mode )) return FALSE;
|
||||
+ RtlEnterCriticalSection( &dir_section );
|
||||
+ if ((cwd = open(".", O_RDONLY) == -1))
|
||||
+ {
|
||||
+ RtlLeaveCriticalSection( &dir_section );
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ if (!fchdir( fd ))
|
||||
+ {
|
||||
+ ret = !stat( "..", &parent ) && (parent.st_dev != st->st_dev || parent.st_ino == st->st_ino);
|
||||
+ if (fchdir( cwd ) == -1) chdir( "/" );
|
||||
+ }
|
||||
+ close( cwd );
|
||||
+ RtlLeaveCriticalSection( &dir_section );
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/* get the stat info and file attributes for a file (by file descriptor) */
|
||||
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
|
||||
index 76e8ec284e8..b32de1d60e5 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -190,6 +190,7 @@ extern unsigned int DIR_get_drives_info( struct drive_info info[MAX_DOS_DRIVES]
|
||||
extern NTSTATUS file_id_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, ANSI_STRING *unix_name_ret ) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS nt_to_unix_file_name_attr( const OBJECT_ATTRIBUTES *attr, ANSI_STRING *unix_name_ret,
|
||||
UINT disposition ) DECLSPEC_HIDDEN;
|
||||
+extern RTL_CRITICAL_SECTION dir_section DECLSPEC_HIDDEN;
|
||||
|
||||
/* virtual memory */
|
||||
extern NTSTATUS virtual_alloc( PVOID *ret, unsigned short zero_bits_64, SIZE_T *size_ptr,
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,4 +0,0 @@
|
||||
# Older versions of the Mac SDK, such as the one currently used to compile Mac
|
||||
# packages, don't have fstatat(3). We might want to put this into upstream Wine,
|
||||
# but if we can get away with updating the SDK instead, that might be
|
||||
# preferable.
|
Loading…
x
Reference in New Issue
Block a user