Fix MinGW and MinGW-w64 builds

Closes GH-222 and GH-267.
Thanks Yuki Okumura and Yasuhiro Matsumoto for providing fixes.
This commit is contained in:
Bert Belder 2011-12-01 15:47:49 +01:00
parent 7c50415db6
commit ee49c7a2b6
2 changed files with 27 additions and 2 deletions

View File

@ -142,7 +142,9 @@ typedef HANDLE uv_thread_t;
typedef CRITICAL_SECTION uv_mutex_t;
typedef union {
SRWLOCK srwlock_;
/* srwlock_ has type SRWLOCK, but not all toolchains define this type in */
/* windows.h. */
void* srwlock_;
struct {
uv_mutex_t read_mutex_;
uv_mutex_t write_mutex_;

View File

@ -4080,7 +4080,7 @@
/* from ntifs.h */
/* MinGW already has it */
#ifndef __MINGW32__
#if defined(_MSC_VER) || defined(__MINGW64__)
typedef struct _REPARSE_DATA_BUFFER {
ULONG ReparseTag;
USHORT ReparseDataLength;
@ -4281,6 +4281,10 @@ typedef enum _FILE_INFORMATION_CLASS {
FILE_SPECIAL_ACCESS)
#endif
#ifndef IO_REPARSE_TAG_SYMLINK
# define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
#endif
typedef VOID (NTAPI *PIO_APC_ROUTINE)
(PVOID ApcContext,
PIO_STATUS_BLOCK IoStatusBlock,
@ -4333,6 +4337,24 @@ typedef NTSTATUS (NTAPI *sNtSetInformationFile)
} OVERLAPPED_ENTRY, *LPOVERLAPPED_ENTRY;
#endif
#ifdef __MINGW32__
typedef PVOID RTL_SRWLOCK;
typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
#endif
/* from wincon.h */
#ifndef ENABLE_INSERT_MODE
# define ENABLE_INSERT_MODE 0x20
#endif
#ifndef ENABLE_QUICK_EDIT_MODE
# define ENABLE_QUICK_EDIT_MODE 0x40
#endif
#ifndef ENABLE_EXTENDED_FLAGS
# define ENABLE_EXTENDED_FLAGS 0x80
#endif
typedef BOOL (WINAPI *sGetQueuedCompletionStatusEx)
(HANDLE CompletionPort,
LPOVERLAPPED_ENTRY lpCompletionPortEntries,
@ -4371,6 +4393,7 @@ typedef VOID (WINAPI* sReleaseSRWLockShared)
typedef VOID (WINAPI* sReleaseSRWLockExclusive)
(PSRWLOCK SRWLock);
/* Ntapi function pointers */
extern sRtlNtStatusToDosError pRtlNtStatusToDosError;
extern sNtDeviceIoControlFile pNtDeviceIoControlFile;