diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e52a02daf..ff3d70400 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2012-06-28 Corinna Vinschen + + * exceptions.cc (RtlUnwind): Align declaration with MSDN. + * ntdll.h: Define CreateDisposition Flags. Add comments. + * winlean.h: Define FILE_SHARE_VALID_FLAGS if using Mingw64 headers. + 2012-06-27 Christopher Faylor * cygwait.h (cancelable_wait): Make extern to avoid always including. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 4c477e05d..4aa48c5ef 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -449,7 +449,7 @@ try_to_debug (bool waitloop) return dbg; } -extern "C" DWORD __stdcall RtlUnwind (void *, void *, void *, DWORD); +extern "C" void WINAPI RtlUnwind (void *, void *, PEXCEPTION_RECORD, void *); static void __stdcall rtl_unwind (exception_list *, PEXCEPTION_RECORD) __attribute__ ((noinline, regparm (3))); void __stdcall rtl_unwind (exception_list *frame, PEXCEPTION_RECORD e) diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index 2f63f41da..6a9122354 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -24,6 +24,15 @@ #define NtCurrentThread() ((HANDLE) 0xfffffffe) /* CreateDisposition in NtCreateFile call. */ +#define FILE_SUPERSEDE 0x00000000 +#define FILE_OPEN 0x00000001 +#define FILE_CREATE 0x00000002 +#define FILE_OPEN_IF 0x00000003 +#define FILE_OVERWRITE 0x00000004 +#define FILE_OVERWRITE_IF 0x00000005 +#define FILE_MAXIMUM_DISPOSITION 0x00000005 + +/* Creation information returned in IO_STATUS_BLOCK. */ #define FILE_SUPERSEDED 0 #define FILE_OPENED 1 #define FILE_CREATED 2 @@ -31,6 +40,28 @@ #define FILE_EXISTS 4 #define FILE_DOES_NOT_EXIST 5 +/* CreateFile/OpenFile options */ +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_SEQUENTIAL_ONLY 0x00000004 +#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 +#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_CREATE_TREE_CONNECTION 0x00000080 +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_NO_EA_KNOWLEDGE 0x00000200 +#define FILE_OPEN_FOR_RECOVERY 0x00000400 +#define FILE_RANDOM_ACCESS 0x00000800 +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_BY_FILE_ID 0x00002000 +#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 +#define FILE_NO_COMPRESSION 0x00008000 +#define FILE_RESERVE_OPFILTER 0x00100000 +#define FILE_OPEN_REPARSE_POINT 0x00200000 +#define FILE_OPEN_NO_RECALL 0x00400000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 + /* Relative file position values in NtWriteFile call. */ #define FILE_WRITE_TO_END_OF_FILE (-1LL) #define FILE_USE_FILE_POINTER_POSITION (-2LL) diff --git a/winsup/cygwin/winlean.h b/winsup/cygwin/winlean.h index e5eeeb2ac..7d40b8321 100644 --- a/winsup/cygwin/winlean.h +++ b/winsup/cygwin/winlean.h @@ -37,4 +37,9 @@ details. */ use this function. Use GetSystemWindowsDirectoryW. */ #define GetWindowsDirectoryW dont_use_GetWindowsDirectory #define GetWindowsDirectoryA dont_use_GetWindowsDirectory +/* FILE_SHARE_VALID_FLAGS is a Mingw32 invention not backed by the system + headers. Therefore it's not defined by Mingw64, either. */ +#ifdef __MINGW64_VERSION_MAJOR +#define FILE_SHARE_VALID_FLAGS (FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE) +#endif #endif /*_WINLEAN_H*/