This list is closed, nobody may subscribe to it.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(12) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(13) |
Feb
(2) |
Mar
(1) |
Apr
(1) |
May
|
Jun
(38) |
Jul
(10) |
Aug
(70) |
Sep
(63) |
Oct
(61) |
Nov
(41) |
Dec
(28) |
| 2002 |
Jan
(43) |
Feb
(11) |
Mar
(9) |
Apr
(2) |
May
(97) |
Jun
(94) |
Jul
(13) |
Aug
(49) |
Sep
(41) |
Oct
(24) |
Nov
(55) |
Dec
(126) |
| 2003 |
Jan
(90) |
Feb
(75) |
Mar
(32) |
Apr
(24) |
May
(54) |
Jun
(54) |
Jul
(22) |
Aug
(4) |
Sep
(16) |
Oct
(8) |
Nov
(6) |
Dec
(13) |
| 2004 |
Jan
|
Feb
(17) |
Mar
(60) |
Apr
(21) |
May
(12) |
Jun
|
Jul
(13) |
Aug
|
Sep
(29) |
Oct
|
Nov
|
Dec
(2) |
| 2005 |
Jan
(22) |
Feb
(3) |
Mar
(2) |
Apr
(13) |
May
(82) |
Jun
(18) |
Jul
(30) |
Aug
(17) |
Sep
(3) |
Oct
(19) |
Nov
(4) |
Dec
(8) |
| 2006 |
Jan
(1) |
Feb
(6) |
Mar
(2) |
Apr
(40) |
May
|
Jun
(21) |
Jul
(1) |
Aug
(410) |
Sep
(3) |
Oct
|
Nov
(56) |
Dec
(7) |
| 2007 |
Jan
(19) |
Feb
|
Mar
(4) |
Apr
(8) |
May
(19) |
Jun
(6) |
Jul
(4) |
Aug
(6) |
Sep
|
Oct
(4) |
Nov
(3) |
Dec
(2) |
| 2008 |
Jan
(13) |
Feb
(18) |
Mar
(12) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
(6) |
Mar
(8) |
Apr
(2) |
May
(2) |
Jun
|
Jul
|
Aug
(2) |
Sep
(11) |
Oct
(13) |
Nov
(17) |
Dec
(6) |
| 2010 |
Jan
(24) |
Feb
(10) |
Mar
(27) |
Apr
(20) |
May
(108) |
Jun
(8) |
Jul
(23) |
Aug
(38) |
Sep
(49) |
Oct
(17) |
Nov
(12) |
Dec
(14) |
| 2011 |
Jan
(17) |
Feb
(7) |
Mar
(28) |
Apr
(8) |
May
(20) |
Jun
(11) |
Jul
(7) |
Aug
(12) |
Sep
(4) |
Oct
(20) |
Nov
(19) |
Dec
(2) |
| 2012 |
Jan
(2) |
Feb
(6) |
Mar
(5) |
Apr
(24) |
May
(5) |
Jun
(4) |
Jul
(6) |
Aug
(18) |
Sep
(38) |
Oct
(26) |
Nov
(12) |
Dec
(6) |
| 2013 |
Jan
(19) |
Feb
(18) |
Mar
(44) |
Apr
(35) |
May
(18) |
Jun
(21) |
Jul
(10) |
Aug
(19) |
Sep
(44) |
Oct
(25) |
Nov
(1) |
Dec
(2) |
| 2014 |
Jan
(8) |
Feb
|
Mar
|
Apr
(5) |
May
(1) |
Jun
(3) |
Jul
|
Aug
(3) |
Sep
|
Oct
(4) |
Nov
(4) |
Dec
(7) |
| 2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(4) |
Jul
(6) |
Aug
(2) |
Sep
(8) |
Oct
(2) |
Nov
(1) |
Dec
(3) |
| 2016 |
Jan
(7) |
Feb
(9) |
Mar
(5) |
Apr
(5) |
May
(9) |
Jun
(4) |
Jul
(20) |
Aug
(4) |
Sep
(7) |
Oct
(6) |
Nov
(9) |
Dec
(2) |
| 2017 |
Jan
(7) |
Feb
(7) |
Mar
(5) |
Apr
|
May
(1) |
Jun
(4) |
Jul
(12) |
Aug
(4) |
Sep
(1) |
Oct
(4) |
Nov
(11) |
Dec
(14) |
| 2018 |
Jan
(3) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
|
2
|
3
|
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
|
18
|
19
|
20
|
21
|
22
|
23
(1) |
24
|
|
25
|
26
(2) |
27
|
28
|
|
|
|
|
From: Keith M. <no...@so...> - 2018-02-26 19:26:24
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Repository: mingw-org-wsl".
The branch, 5.1-trunk has been updated
via 596ddea2abd2b59694337842839fad974656e60f (commit)
via 4924a14eed2d67a9a809944e035b89700279290c (commit)
via 45cb48357e671918e7ddff8e5fc29588e42fc641 (commit)
via c6a46d4a960a6c634c4dfc9a74ead56aa4270a19 (commit)
from 2d24930930ca530a8b9e6b4fb892cf15562fce4a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sf.net/p/mingw/mingw-org-wsl/ci/596ddea2abd2b59694337842839fad974656e60f/
commit 596ddea2abd2b59694337842839fad974656e60f
Author: Keith Marshall <ke...@us...>
Date: Mon Feb 26 19:22:26 2018 +0000
Adjust repository version following WSL-5.1 release.
diff --git a/ChangeLog b/ChangeLog
index 90627d2..5b2f5fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2018-02-26 Keith Marshall <ke...@us...>
+ Adjust repository version following WSL-5.1 release.
+
+ * VERSION.m4 (__VERSION__): Increment it to 5.1.1
+
+2018-02-26 Keith Marshall <ke...@us...>
+
Prepare and publish MinGW.org WSL-5.1 release.
* All files (wsl-5.1-release): Tag assigned.
diff --git a/VERSION.m4 b/VERSION.m4
index 2f2a53a..c7dd0bc 100644
--- a/VERSION.m4
+++ b/VERSION.m4
@@ -6,7 +6,7 @@
# assign a common version number to each of the mingwrt and w32api
# MinGW System Library sub-packages.
#
-m4_define([__VERSION__],[5.1])
+m4_define([__VERSION__],[5.1.1])
# This is also a convenient place to specify the import library
# associations, and DLLVERSION information for each DLL which may
https://sf.net/p/mingw/mingw-org-wsl/ci/4924a14eed2d67a9a809944e035b89700279290c/
commit 4924a14eed2d67a9a809944e035b89700279290c
Author: Keith Marshall <ke...@us...>
Date: Mon Feb 26 18:52:57 2018 +0000
Added tag wsl-5.1-release for changeset 2b81c4eb9c59
diff --git a/.hgtags b/.hgtags
index 56746d3..e717d8e 100644
--- a/.hgtags
+++ b/.hgtags
@@ -11,3 +11,4 @@ e92b7e85ef0890284b99d2c8243519f77457e2be mingwrt-3.22.4-release
44bf2b16d28510dd0857ac5a949171d33360973f wsl-5.0-release
b44e016d9ea758327706bd9325d15c52e82400e8 wsl-5.0.1-release
ce1ec977a1c0130e1729dd3dc26d3bc5193b439c wsl-5.0.2-release
+2b81c4eb9c5977e7fc37e250dd1c6c97950d6ddf wsl-5.1-release
https://sf.net/p/mingw/mingw-org-wsl/ci/45cb48357e671918e7ddff8e5fc29588e42fc641/
commit 45cb48357e671918e7ddff8e5fc29588e42fc641
Author: Keith Marshall <ke...@us...>
Date: Mon Feb 26 18:52:43 2018 +0000
Prepare and publish MinGW.org WSL-5.1 release.
diff --git a/ChangeLog b/ChangeLog
index 9baa042..90627d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2018-02-26 Keith Marshall <ke...@us...>
+
+ Prepare and publish MinGW.org WSL-5.1 release.
+
+ * All files (wsl-5.1-release): Tag assigned.
+ * VERSION.m4 (libmingwex.dll.a): Update ABI version identifier.
+
2017-12-06 Keith Marshall <ke...@us...>
Adjust repository version following WSL-5.0.2 release.
diff --git a/VERSION.m4 b/VERSION.m4
index dcef900..2f2a53a 100644
--- a/VERSION.m4
+++ b/VERSION.m4
@@ -23,7 +23,7 @@ m4_define([__VERSION__],[5.1])
# as required, in accordance with libtool conventions.
#
m4_define([MINGW_AC_ENUMERATE_DLLVERSION_SPECS],dnl
-[MINGW_AC_SET_DLLVERSION([LIBMINGWEX], [libmingwex.dll.a], [0:0:0])dnl
+[MINGW_AC_SET_DLLVERSION([LIBMINGWEX], [libmingwex.dll.a], [1:0:1])dnl
])
# $RCSfile$: end of file
diff --git a/mingwrt/ChangeLog b/mingwrt/ChangeLog
index a4a2777..5c80702 100644
--- a/mingwrt/ChangeLog
+++ b/mingwrt/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-26 Keith Marshall <ke...@us...>
+
+ Prepare and publish MinGW.org WSL-5.1 release.
+
+ * All files (wsl-5.1-release): Tag assigned.
+
2018-02-22 Keith Marshall <ke...@us...>
Correct <sys/timeb.h> 32-bit vs. 64-bit time_t anomalies.
diff --git a/w32api/ChangeLog b/w32api/ChangeLog
index 86cb672..e973b39 100644
--- a/w32api/ChangeLog
+++ b/w32api/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-26 Keith Marshall <ke...@us...>
+
+ Prepare and publish MinGW.org WSL-5.1 release.
+
+ * All files (wsl-5.1-release): Tag assigned.
+
2018-02-24 Keith Marshall <ke...@us...>
Make <iptypes.h> header effectively self-contained.
https://sf.net/p/mingw/mingw-org-wsl/ci/c6a46d4a960a6c634c4dfc9a74ead56aa4270a19/
commit c6a46d4a960a6c634c4dfc9a74ead56aa4270a19
Author: Keith Marshall <ke...@us...>
Date: Sat Feb 24 15:41:13 2018 +0000
Make <iptypes.h> header effectively self-contained.
diff --git a/w32api/ChangeLog b/w32api/ChangeLog
index eefa43d..86cb672 100644
--- a/w32api/ChangeLog
+++ b/w32api/ChangeLog
@@ -1,3 +1,18 @@
+2018-02-24 Keith Marshall <ke...@us...>
+
+ Make <iptypes.h> header effectively self-contained.
+
+ * include/iptypes.h: Assert copyright; tidy layout.
+ Include <windef.h>; it is required for self-containment.
+ (__need_time_t): Define for selective inclusion of <sys/types.h>
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use them as appropriate.
+ (_WIN32_WINNT): Always compare it symbolically.
+ (__dhcp_time_t): New temporary data type macro; define it...
+ [_WIN64]: ...as equivalent to __time64_t, otherwise...
+ [!_WIN64]: ...equivalent to __time32_t, and then...
+ (struct _IP_ADAPTER_INFO): ...use it as the data type for...
+ (LeaseObtained, LeaseExpires): ...these fields.
+
2017-12-20 Keith Marshall <ke...@us...>
Make <winreg.h> header effectively self-contained.
diff --git a/w32api/include/iptypes.h b/w32api/include/iptypes.h
index df281e6..14257d7 100644
--- a/w32api/include/iptypes.h
+++ b/w32api/include/iptypes.h
@@ -1,91 +1,152 @@
+/*
+ * iptypes.h
+ *
+ * Internet Protocol Type Definitions and Manifest Constants
+ *
+ *
+ * $Id$
+ *
+ * Written by Corinna Vinschen <co...@vi...>
+ * Copyright (C) 2000-2002, 2006, 2018, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
#ifndef _IPTYPES_H
-#define _IPTYPES_H
-#if __GNUC__ >= 3
#pragma GCC system_header
-#endif
+#define _IPTYPES_H
+#include <windef.h>
+#define __need_time_t 1
#include <sys/types.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
+#undef __need_time_t
+
+_BEGIN_C_DECLS
+
+#define DEFAULT_MINIMUM_ENTITIES 32
+
+#define MAX_ADAPTER_ADDRESS_LENGTH 8
+#define MAX_ADAPTER_DESCRIPTION_LENGTH 128
+#define MAX_ADAPTER_NAME_LENGTH 256
+#define MAX_DOMAIN_NAME_LEN 128
+#define MAX_HOSTNAME_LEN 128
+#define MAX_SCOPE_ID_LEN 256
+
+#define BROADCAST_NODETYPE 1
+#define PEER_TO_PEER_NODETYPE 2
+#define MIXED_NODETYPE 4
+#define HYBRID_NODETYPE 8
+#define IF_OTHER_ADAPTERTYPE 0
+#define IF_ETHERNET_ADAPTERTYPE 1
+#define IF_TOKEN_RING_ADAPTERTYPE 2
+#define IF_FDDI_ADAPTERTYPE 3
+#define IF_PPP_ADAPTERTYPE 4
+#define IF_LOOPBACK_ADAPTERTYPE 5
-#define DEFAULT_MINIMUM_ENTITIES 32
-#define MAX_ADAPTER_ADDRESS_LENGTH 8
-#define MAX_ADAPTER_DESCRIPTION_LENGTH 128
-#define MAX_ADAPTER_NAME_LENGTH 256
-#define MAX_DOMAIN_NAME_LEN 128
-#define MAX_HOSTNAME_LEN 128
-#define MAX_SCOPE_ID_LEN 256
-#define BROADCAST_NODETYPE 1
-#define PEER_TO_PEER_NODETYPE 2
-#define MIXED_NODETYPE 4
-#define HYBRID_NODETYPE 8
-#define IF_OTHER_ADAPTERTYPE 0
-#define IF_ETHERNET_ADAPTERTYPE 1
-#define IF_TOKEN_RING_ADAPTERTYPE 2
-#define IF_FDDI_ADAPTERTYPE 3
-#define IF_PPP_ADAPTERTYPE 4
-#define IF_LOOPBACK_ADAPTERTYPE 5
-#if (_WIN32_WINNT >= 0x0501)
-#define IP_ADAPTER_DDNS_ENABLED 0x00000001
-#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x00000002
-#define IP_ADAPTER_DHCP_ENABLED 0x00000004
-#define IP_ADAPTER_RECEIVE_ONLY 0x00000008
-#define IP_ADAPTER_NO_MULTICAST 0x00000010
-#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x00000020
-#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x00000001
-#define IP_ADAPTER_ADDRESS_TRANSIENT 0x00000002
+#if _WIN32_WINNT >= _WIN32_WINNT_WINXP
+#define IP_ADAPTER_DDNS_ENABLED 0x00000001
+#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x00000002
+#define IP_ADAPTER_DHCP_ENABLED 0x00000004
+#define IP_ADAPTER_RECEIVE_ONLY 0x00000008
+#define IP_ADAPTER_NO_MULTICAST 0x00000010
+#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x00000020
+#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x00000001
+#define IP_ADAPTER_ADDRESS_TRANSIENT 0x00000002
#endif
-typedef struct {
- char String[16];
-} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
-typedef struct _IP_ADDR_STRING {
- struct _IP_ADDR_STRING* Next;
- IP_ADDRESS_STRING IpAddress;
- IP_MASK_STRING IpMask;
- DWORD Context;
+typedef struct { char String[16]; }
+IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
+
+typedef struct _IP_ADDR_STRING
+{ struct _IP_ADDR_STRING *Next;
+ IP_ADDRESS_STRING IpAddress;
+ IP_MASK_STRING IpMask;
+ DWORD Context;
} IP_ADDR_STRING, *PIP_ADDR_STRING;
-typedef struct _IP_ADAPTER_INFO {
- struct _IP_ADAPTER_INFO* Next;
- DWORD ComboIndex;
- char AdapterName[MAX_ADAPTER_NAME_LENGTH+4];
- char Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4];
- UINT AddressLength;
- BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
- DWORD Index;
- UINT Type;
- UINT DhcpEnabled;
- PIP_ADDR_STRING CurrentIpAddress;
- IP_ADDR_STRING IpAddressList;
- IP_ADDR_STRING GatewayList;
- IP_ADDR_STRING DhcpServer;
- BOOL HaveWins;
- IP_ADDR_STRING PrimaryWinsServer;
- IP_ADDR_STRING SecondaryWinsServer;
- time_t LeaseObtained;
- time_t LeaseExpires;
+
+typedef struct _IP_ADAPTER_INFO
+/* This structure includes a pair of fields, which are declared, according to
+ * https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062(v=vs.85).aspx
+ * as being of type time_t, yet they MUST be equivalent to __time32_t on 32-bit
+ * versions or MS-Windows, and to __time64_t on 64-bit versions. Since VS-2005,
+ * Microsoft have made the definition of time_t ambiguous, on 32-bit Windows,
+ * and have placed the onus on users to specify _USE_32_BIT_TIME_T in any
+ * translation unit which uses this structure, to resolve the ambiguity;
+ * WE can do better...
+ */
+#undef __dhcp_time_t
+#ifdef _WIN64
+/* ...by introducing a local type replacement macro, to ensure that the
+ * field definitions become unequivocally 64-bit on Win64...
+ */
+# define __dhcp_time_t __time64_t
+#else
+/* ...and 32-bit, on Win32.
+ */
+# define __dhcp_time_t __time32_t
+#endif
+{ struct _IP_ADAPTER_INFO *Next;
+ DWORD ComboIndex;
+ char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
+ char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
+ UINT AddressLength;
+ BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
+ DWORD Index;
+ UINT Type;
+ UINT DhcpEnabled;
+ PIP_ADDR_STRING CurrentIpAddress;
+ IP_ADDR_STRING IpAddressList;
+ IP_ADDR_STRING GatewayList;
+ IP_ADDR_STRING DhcpServer;
+ BOOL HaveWins;
+ IP_ADDR_STRING PrimaryWinsServer;
+ IP_ADDR_STRING SecondaryWinsServer;
+ __dhcp_time_t LeaseObtained;
+ __dhcp_time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
-typedef struct _IP_PER_ADAPTER_INFO {
- UINT AutoconfigEnabled;
- UINT AutoconfigActive;
- PIP_ADDR_STRING CurrentDnsServer;
- IP_ADDR_STRING DnsServerList;
+#undef __dhcp_time_t
+
+typedef struct _IP_PER_ADAPTER_INFO
+{ UINT AutoconfigEnabled;
+ UINT AutoconfigActive;
+ PIP_ADDR_STRING CurrentDnsServer;
+ IP_ADDR_STRING DnsServerList;
} IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
-typedef struct _FIXED_INFO {
- char HostName[MAX_HOSTNAME_LEN+4] ;
- char DomainName[MAX_DOMAIN_NAME_LEN+4];
- PIP_ADDR_STRING CurrentDnsServer;
- IP_ADDR_STRING DnsServerList;
- UINT NodeType;
- char ScopeId[MAX_SCOPE_ID_LEN+4];
- UINT EnableRouting;
- UINT EnableProxy;
- UINT EnableDns;
+
+typedef struct _FIXED_INFO
+{ char HostName[MAX_HOSTNAME_LEN + 4] ;
+ char DomainName[MAX_DOMAIN_NAME_LEN + 4];
+ PIP_ADDR_STRING CurrentDnsServer;
+ IP_ADDR_STRING DnsServerList;
+ UINT NodeType;
+ char ScopeId[MAX_SCOPE_ID_LEN + 4];
+ UINT EnableRouting;
+ UINT EnableProxy;
+ UINT EnableDns;
} FIXED_INFO, *PFIXED_INFO;
-#if (_WIN32_WINNT >= 0x0501) && defined(_WINSOCK2_H)
-typedef enum {
- IfOperStatusUp = 1,
+
+#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) && defined _WINSOCK2_H
+
+typedef enum
+{ IfOperStatusUp = 1,
IfOperStatusDown,
IfOperStatusTesting,
IfOperStatusUnknown,
@@ -93,137 +154,148 @@ typedef enum {
IfOperStatusNotPresent,
IfOperStatusLowerLayerDown
} IF_OPER_STATUS;
-typedef enum {
- IpDadStateInvalid = 0,
+
+typedef enum
+{ IpDadStateInvalid = 0,
IpDadStateTentative,
IpDadStateDuplicate,
IpDadStateDeprecated,
IpDadStatePreferred
} IP_DAD_STATE;
-typedef enum {
- IpPrefixOriginOther = 0,
+
+typedef enum
+{ IpPrefixOriginOther = 0,
IpPrefixOriginManual,
IpPrefixOriginWellKnown,
IpPrefixOriginDhcp,
IpPrefixOriginRouterAdvertisement
} IP_PREFIX_ORIGIN;
-typedef enum {
- IpSuffixOriginOther = 0,
+
+typedef enum
+{ IpSuffixOriginOther = 0,
IpSuffixOriginManual,
IpSuffixOriginWellKnown,
IpSuffixOriginDhcp,
IpSuffixOriginLinkLayerAddress,
IpSuffixOriginRandom
} IP_SUFFIX_ORIGIN;
-typedef enum {
- ScopeLevelInterface = 1,
- ScopeLevelLink = 2,
- ScopeLevelSubnet = 3,
- ScopeLevelAdmin = 4,
- ScopeLevelSite = 5,
- ScopeLevelOrganization = 8,
- ScopeLevelGlobal = 14
+
+typedef enum
+{ ScopeLevelInterface = 1,
+ ScopeLevelLink = 2,
+ ScopeLevelSubnet = 3,
+ ScopeLevelAdmin = 4,
+ ScopeLevelSite = 5,
+ ScopeLevelOrganization = 8,
+ ScopeLevelGlobal = 14
} SCOPE_LEVEL;
-typedef struct {
- ULONG Index;
- ULONG MediaType;
- UCHAR ConnectionType;
- UCHAR AccessType;
- GUID DeviceGuid;
- GUID InterfaceGuid;
-} IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO;
-typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
- _ANONYMOUS_UNION union {
- ULONGLONG Alignment;
- _ANONYMOUS_STRUCT struct {
- ULONG Length;
- DWORD Flags;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- struct _IP_ADAPTER_ANYCAST_ADDRESS* Next;
- SOCKET_ADDRESS Address;
-} IP_ADAPTER_ANYCAST_ADDRESS,*PIP_ADAPTER_ANYCAST_ADDRESS;
-typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
- _ANONYMOUS_UNION union {
- ULONGLONG Alignment;
- _ANONYMOUS_STRUCT struct {
- ULONG Length;
- DWORD Flags;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- struct _IP_ADAPTER_MULTICAST_ADDRESS* Next;
- SOCKET_ADDRESS Address;
-} IP_ADAPTER_MULTICAST_ADDRESS,*PIP_ADAPTER_MULTICAST_ADDRESS;
-typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
- _ANONYMOUS_UNION union {
- ULONGLONG Alignment;
- _ANONYMOUS_STRUCT struct {
- ULONG Length;
- DWORD Flags;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- struct _IP_ADAPTER_UNICAST_ADDRESS* Next;
- SOCKET_ADDRESS Address;
- IP_PREFIX_ORIGIN PrefixOrigin;
- IP_SUFFIX_ORIGIN SuffixOrigin;
- IP_DAD_STATE DadState;
- ULONG ValidLifetime;
- ULONG PreferredLifetime;
- ULONG LeaseLifetime;
-} IP_ADAPTER_UNICAST_ADDRESS,*PIP_ADAPTER_UNICAST_ADDRESS;
-typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
- _ANONYMOUS_UNION union {
- ULONGLONG Alignment;
- _ANONYMOUS_STRUCT struct {
- ULONG Length;
- DWORD Reserved;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- struct _IP_ADAPTER_DNS_SERVER_ADDRESS* Next;
- SOCKET_ADDRESS Address;
-} IP_ADAPTER_DNS_SERVER_ADDRESS,*PIP_ADAPTER_DNS_SERVER_ADDRESS;
-typedef struct _IP_ADAPTER_PREFIX {
- _ANONYMOUS_UNION union {
- ULONGLONG Alignment;
- _ANONYMOUS_STRUCT struct {
- ULONG Length;
- DWORD Flags;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- struct _IP_ADAPTER_PREFIX* Next;
- SOCKET_ADDRESS Address;
- ULONG PrefixLength;
-} IP_ADAPTER_PREFIX,*PIP_ADAPTER_PREFIX;
-typedef struct _IP_ADAPTER_ADDRESSES {
- _ANONYMOUS_UNION union {
- ULONGLONG Alignment;
- _ANONYMOUS_STRUCT struct {
- ULONG Length;
- DWORD IfIndex;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- struct _IP_ADAPTER_ADDRESSES* Next;
- PCHAR AdapterName;
- PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
- PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
- PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
- PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
- PWCHAR DnsSuffix;
- PWCHAR Description;
- PWCHAR FriendlyName;
- BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
- DWORD PhysicalAddressLength;
- DWORD Flags;
- DWORD Mtu;
- DWORD IfType;
- IF_OPER_STATUS OperStatus;
- DWORD Ipv6IfIndex;
- DWORD ZoneIndices[16];
- PIP_ADAPTER_PREFIX FirstPrefix;
-} IP_ADAPTER_ADDRESSES,*PIP_ADAPTER_ADDRESSES;
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif /* _IPTYPES_H */
+typedef struct
+{ ULONG Index;
+ ULONG MediaType;
+ UCHAR ConnectionType;
+ UCHAR AccessType;
+ GUID DeviceGuid;
+ GUID InterfaceGuid;
+} IP_INTERFACE_NAME_INFO, *PIP_INTERFACE_NAME_INFO;
+
+typedef struct _IP_ADAPTER_ANYCAST_ADDRESS
+{ _ANONYMOUS_UNION union
+ { ULONGLONG Alignment;
+ _ANONYMOUS_STRUCT struct
+ { ULONG Length;
+ DWORD Flags;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
+ SOCKET_ADDRESS Address;
+} IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
+
+typedef struct _IP_ADAPTER_MULTICAST_ADDRESS
+{ _ANONYMOUS_UNION union
+ { ULONGLONG Alignment;
+ _ANONYMOUS_STRUCT struct
+ { ULONG Length;
+ DWORD Flags;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
+ SOCKET_ADDRESS Address;
+} IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
+
+typedef struct _IP_ADAPTER_UNICAST_ADDRESS
+{ _ANONYMOUS_UNION union
+ { ULONGLONG Alignment;
+ _ANONYMOUS_STRUCT struct
+ { ULONG Length;
+ DWORD Flags;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
+ SOCKET_ADDRESS Address;
+ IP_PREFIX_ORIGIN PrefixOrigin;
+ IP_SUFFIX_ORIGIN SuffixOrigin;
+ IP_DAD_STATE DadState;
+ ULONG ValidLifetime;
+ ULONG PreferredLifetime;
+ ULONG LeaseLifetime;
+} IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
+
+typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS
+{ _ANONYMOUS_UNION union
+ { ULONGLONG Alignment;
+ _ANONYMOUS_STRUCT struct
+ { ULONG Length;
+ DWORD Reserved;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
+ SOCKET_ADDRESS Address;
+} IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
+
+typedef struct _IP_ADAPTER_PREFIX
+{ _ANONYMOUS_UNION union
+ { ULONGLONG Alignment;
+ _ANONYMOUS_STRUCT struct
+ { ULONG Length;
+ DWORD Flags;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ struct _IP_ADAPTER_PREFIX *Next;
+ SOCKET_ADDRESS Address;
+ ULONG PrefixLength;
+} IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
+
+typedef struct _IP_ADAPTER_ADDRESSES
+{ _ANONYMOUS_UNION union
+ { ULONGLONG Alignment;
+ _ANONYMOUS_STRUCT struct
+ { ULONG Length;
+ DWORD IfIndex;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ struct _IP_ADAPTER_ADDRESSES *Next;
+ PCHAR AdapterName;
+ PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
+ PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
+ PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
+ PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
+ PWCHAR DnsSuffix;
+ PWCHAR Description;
+ PWCHAR FriendlyName;
+ BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
+ DWORD PhysicalAddressLength;
+ DWORD Flags;
+ DWORD Mtu;
+ DWORD IfType;
+ IF_OPER_STATUS OperStatus;
+ DWORD Ipv6IfIndex;
+ DWORD ZoneIndices[16];
+ PIP_ADAPTER_PREFIX FirstPrefix;
+} IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
+
+#endif /* WinXP && _WINSOCK2_H */
+
+_END_C_DECLS
+
+#endif /* !_IPTYPES_H: $RCSfile$: end of file */
-----------------------------------------------------------------------
Summary of changes:
.hgtags | 1 +
ChangeLog | 13 ++
VERSION.m4 | 4 +-
mingwrt/ChangeLog | 6 +
w32api/ChangeLog | 21 +++
w32api/include/iptypes.h | 458 +++++++++++++++++++++++++++--------------------
6 files changed, 308 insertions(+), 195 deletions(-)
hooks/post-receive
--
Repository: mingw-org-wsl
|
|
From: Keith M. <no...@so...> - 2018-02-26 19:26:20
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Repository: mingw-org-wsl".
The tag, wsl-5.1-release has been created
at 45cb48357e671918e7ddff8e5fc29588e42fc641 (commit)
- Log -----------------------------------------------------------------
commit 45cb48357e671918e7ddff8e5fc29588e42fc641
Author: Keith Marshall <ke...@us...>
Date: Mon Feb 26 18:52:43 2018 +0000
Prepare and publish MinGW.org WSL-5.1 release.
-----------------------------------------------------------------------
hooks/post-receive
--
Repository: mingw-org-wsl
|
|
From: Keith M. <no...@so...> - 2018-02-23 22:40:16
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Repository: mingw-org-wsl".
The branch, 5.1-trunk has been updated
via 2d24930930ca530a8b9e6b4fb892cf15562fce4a (commit)
via b0a6e63e896cf28447d2312375976bf111cbc100 (commit)
from 5abede16dd604548bd822293335c58f0bf91fb1e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sf.net/p/mingw/mingw-org-wsl/ci/2d24930930ca530a8b9e6b4fb892cf15562fce4a/
commit 2d24930930ca530a8b9e6b4fb892cf15562fce4a
Author: Keith Marshall <ke...@us...>
Date: Fri Feb 23 19:51:52 2018 +0000
Correct <sys/timeb.h> 32-bit vs. 64-bit time_t anomalies.
diff --git a/mingwrt/ChangeLog b/mingwrt/ChangeLog
index ab5367c..a4a2777 100644
--- a/mingwrt/ChangeLog
+++ b/mingwrt/ChangeLog
@@ -1,5 +1,33 @@
2018-02-22 Keith Marshall <ke...@us...>
+ Correct <sys/timeb.h> 32-bit vs. 64-bit time_t anomalies.
+
+ * include/sys/timeb.h: Assert copyright; tidy layout.
+ (_TIMEB_H_): Original multiple inclusion guard macro; rename it...
+ (_SYS_TIMEB_H): ...conforming to this preferred naming convention.
+ (GCC system_header): Add pragma, asserting it as such a header.
+ (__need_time_t): Define for selective <sys/types.h> inclusion.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use them as appropriate.
+ (pragma pack): Push to pack all structs with 2-byte alignment.
+ (struct timeb): Mark as deprecated, from POSIX.1-2001 onwards.
+ (ftime): Likewise, mark as deprecated; always emulate it by in-line
+ redirection to _ftime(), however this may be implemented.
+ (struct __timeb32): Make its definition unconditionally visible.
+ (_ftime32) [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: Declare prototype.
+ (_ftime32) [_WIN64 || _WIN32_WINNT >= _WIN32_WINNT_VISTA]: Likewise,
+ otherwise emulate it by in-line redirection to 32-bit _ftime().
+ (struct __timeb64, _ftime64): Make visibility condition symbolic...
+ [__MSVCRT_VERSION__ >= __MSVCR61_DLL]: ...thus; add visibility for...
+ [_WIN64 || _WIN32_WINNT >= _WIN32_WINNT_WIN2K]: ...these alternatives.
+ (_ftime) [__MSVCRT_VERSION__ < __MSVCR80_DLL]: Declare prototype.
+ (_ftime) [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: Emulate it...
+ [_USE_32BIT_TIME_T]: ...by in-line redirection to _ftime32(), else...
+ [!_USE_32BIT_TIME_T]: ...to _ftime64().
+
+ * tests/headers.at [sys/timeb.h]: Suppress "deprecated" warnings.
+
+2018-02-22 Keith Marshall <ke...@us...>
+
Correct Windows version support for <utime.h> functions.
* include/sys/utime.h: Tidy layout; assert copyright.
diff --git a/mingwrt/include/sys/timeb.h b/mingwrt/include/sys/timeb.h
index 5287e49..36ac9d5 100644
--- a/mingwrt/include/sys/timeb.h
+++ b/mingwrt/include/sys/timeb.h
@@ -1,97 +1,175 @@
/*
- * timeb.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
+ * sys/timeb.h
*
- * Support for the UNIX System V ftime system call.
+ * Support for the UNIX System V ftime() system call, and its various
+ * Microsoft counterparts.
+ *
+ *
+ * $Id$
+ *
+ * Written by Colin Peters <co...@bi...>
+ * Copyright (C) 1997-2001, 2003, 2004, 2007, 2018, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
*
*/
+#ifndef _SYS_TIMEB_H
+#pragma GCC system_header
+#define _SYS_TIMEB_H
-#ifndef _TIMEB_H_
-#define _TIMEB_H_
-
-/* All the headers include this file. */
#include <_mingw.h>
+#define __need_time_t 1
#include <sys/types.h>
+#undef __need_time_t
-#ifndef RC_INVOKED
+#ifndef RC_INVOKED
-/*
- * TODO: Structure not tested.
+/* Tests conducted on 32-bit Win7 indicate that all timeb structs,
+ * on Win32 hosts, are packed with 2-byte alignment.
+ *
+ * FIXME: Is this also true for Win64 hosts?
+ */
+#pragma pack( push, 2 )
+
+#ifndef _NO_OLDNAMES
+/* This is the standard POSIX/Unix System V API declaration; this
+ * API was declared as deprecated in POSIX.1-2001, and subsequently
+ * deleted from POSIX.1-2008 onwards.
+ */
+struct __POSIX_2001_DEPRECATED timeb
+{ time_t time;
+ short millitm;
+ short timezone;
+ short dstflag;
+};
+#endif
+/* Microsoft's equivalent of the above uses their typically ugly
+ * underscore decorated name; in common with the POSIX variant, it
+ * is susceptible to bugs resulting from time_t ambiguity, which
+ * is endemic within non-free MSVCR80.DLL and later.
*/
struct _timeb
-{
- time_t time;
- short millitm;
- short timezone;
- short dstflag;
+{ time_t time;
+ short millitm;
+ short timezone;
+ short dstflag;
};
-#if __MSVCRT_VERSION__ >= 0x0800
-/*
- * TODO: Structure not tested.
+/* To avoid time_t ambiguity, the following is equivalent to struct
+ * _timeb, with explicitly 32-bit time_t; strictly, Microsoft didn't
+ * support this, on 32-bit Windows, until non-free MSVCR80.DLL, or
+ * universally from Win-Vista onwards; we make it unconditionally
+ * available, and back-port its associated _ftime32() function
+ * for use on legacy Win32 hosts.
*/
struct __timeb32
-{
- __time32_t time;
- short millitm;
- short timezone;
- short dstflag;
+{ __time32_t time;
+ short millitm;
+ short timezone;
+ short dstflag;
};
-#endif /* __MSVCRT_VERSION__ >= 0x0800 */
-#ifndef _NO_OLDNAMES
-/*
- * TODO: Structure not tested.
+#pragma pack( pop )
+
+_BEGIN_C_DECLS
+
+#if defined _WIN64 /* Always supported on Win64; otherwise... */ \
+ || __MSVCRT_VERSION__ >= __MSVCR61_DLL || _WIN32_WINNT >= _WIN32_WINNT_WIN2K
+/* The _ftime64() function, and its associated struct __timeb64 data type, were
+ * first introduced in the non-free MSVCR61.DLL runtime, and subsequently, they
+ * were retrofitted to MSVCRT.DLL from Win2K onwards.
*/
-struct timeb
-{
- time_t time;
- short millitm;
- short timezone;
- short dstflag;
+#pragma pack( push, 2 )
+
+struct __timeb64
+{ __time64_t time;
+ short millitm;
+ short timezone;
+ short dstflag;
};
-#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
+#pragma pack( pop )
-/* TODO: Not tested. */
-_CRTIMP void __cdecl __MINGW_NOTHROW _ftime (struct _timeb*);
+_CRTIMP __cdecl __MINGW_NOTHROW void _ftime64 (struct __timeb64 *);
-#ifndef _NO_OLDNAMES
-/* FIXME for __MSVCRT_VERSION__ >= 0x0800 */
-_CRTIMP void __cdecl __MINGW_NOTHROW ftime (struct timeb*);
-#endif /* Not _NO_OLDNAMES */
+#endif /* _WIN64 || __MSVCR61_DLL || _WIN32_WINNT_WIN2K and later */
-/* This requires newer versions of msvcrt.dll (6.10 or higher). */
-#if __MSVCRT_VERSION__ >= 0x0601
-struct __timeb64
-{
- __time64_t time;
- short millitm;
- short timezone;
- short dstflag;
-};
+#if __MSVCRT_VERSION__ < __MSVCR80_DLL
+/* Non-free MSVCR80.DLL, and later, don't povide _ftime() directly;
+ * (it must be emulated); when NOT using any of these non-free DLLs,
+ * we may import it from MSVCRT.DLL
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW void _ftime (struct _timeb *);
+#endif /* !__MSVCR80_DLL or later */
+
+#if defined _WIN64 /* Also always supported on Win64, but... */ \
+ || __MSVCRT_VERSION__ >= __MSVCR80_DLL || _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* Conversely, the complementary _ftime32() function, and its associated struct
+ * __timeb32 data type, were not introduced until non-free MSVCR80.DLL runtime,
+ * nor retrofitted to MSVCRT.DLL until Win-Vista onwards.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW void _ftime32 (struct __timeb32 *);
-_CRTIMP void __cdecl __MINGW_NOTHROW _ftime64 (struct __timeb64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
+#else /* !(_WIN64 || __MSVCR80_DLL || _WIN32_WINNT_VISTA and later) */
+/* This is a legacy _WIN32 system, pre-Win-Vista, and NOT using MSVCR80.DLL,
+ * or later; it is convenient for us to emulate _ftime32(), by the expedient
+ * of mapping it to the legacy 32-bit _ftime() implementation.
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+void _ftime32 (struct __timeb32 *__t) {_ftime ((struct _timeb *)(__t));}
-#if __MSVCRT_VERSION__ >= 0x0800
-_CRTIMP void __cdecl __MINGW_NOTHROW _ftime32 (struct __timeb32*);
-#ifndef _USE_32BIT_TIME_T
-_CRTALIAS void __cdecl __MINGW_NOTHROW _ftime (struct _timeb* _v) { return(_ftime64 ((struct __timeb64*)_v)); }
-#else
-_CRTALIAS void __cdecl __MINGW_NOTHROW _ftime (struct _timeb* _v) { return(_ftime32 ((struct __timeb32*)_v)); }
-#endif
-#endif /* __MSVCRT_VERSION__ >= 0x0800 */
+#endif /* !(_WIN64 || __MSVCR80_DLL || _WIN32_WINNT_VISTA and later) */
-#ifdef __cplusplus
-}
-#endif
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* When linking with any non-free runtime, from MSVCR80.DLL onwards,
+ * we must emulate _ftime(), by redirection to either _ftime32(), or
+ * _ftime64(), depending on (error prone) user feature selection...
+ */
+# ifdef _USE_32BIT_TIME_T
+ /* ...of an API with an explicitly 32-bit time_t...
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+void _ftime (struct _timeb * __t) {_ftime32 ((struct __timeb32*)__t);}
+
+# else
+ /* ...or the Microsoft default, (incompatible with 32-bit MSVCRT.DLL,
+ * and not consistently implemented within all 32-bit WinAPI modules),
+ * 64-bit time_t
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+void _ftime (struct _timeb * __t) {_ftime64 ((struct __timeb64*)__t);}
+
+# endif /* !_USE_32BIT_TIME_T */
+#endif /* __MSVCR80_DLL and later */
+
+#ifndef _NO_OLDNAMES
+/* Regardless of how the _ftime() function may be implemented, we provide
+ * the deprecated POSIX.1 equivalent API, by in-line mapping of the ftime()
+ * function to that _ftime() implementation.
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW __POSIX_2001_DEPRECATED
+void ftime (struct timeb *__t) {_ftime ((struct _timeb *)(__t)); }
+#endif /* !_NO_OLDNAMES */
-#endif /* Not RC_INVOKED */
+_END_C_DECLS
-#endif /* Not _TIMEB_H_ */
+#endif /* ! RC_INVOKED */
+#endif /* !_SYS_TIMEB_H: $RCSfile$: end of file */
diff --git a/mingwrt/tests/headers.at b/mingwrt/tests/headers.at
index 08e2b53..884a456 100644
--- a/mingwrt/tests/headers.at
+++ b/mingwrt/tests/headers.at
@@ -115,6 +115,7 @@ m4_foreach_w([HEADER],MINGWRT_AT_PACKAGE_HEADERS,[dnl
AT_SETUP([#include <]HEADER[>])AT_KEYWORDS([$1 $1-headers])
AS_VAR_APPEND([CPPFLAGS],[" -Wall -Wextra -Wsystem-headers"])
m4_if(HEADER,[unistd.h],AS_VAR_APPEND([CPPFLAGS],[" -Wno-deprecated-declarations"]))
+m4_if(HEADER,[sys/timeb.h],AS_VAR_APPEND([CPPFLAGS],[" -Wno-deprecated-declarations"]))
m4_if(HEADER,[sys/stat.h],AS_VAR_APPEND([CPPFLAGS],[" -D_MINGW_S_IFBLK_KLUDGE"]))
MINGW_AT_CHECK_COMPILE([dnl
#define __IN_MINGWRT_TESTSUITE__ 1
@@ -136,7 +137,7 @@ m4_foreach([LANG],[C,C++],[MINGWRT_AT_CHECK_HEADERS_STANDALONE(LANG)])
m4_define([MINGWRT_AT_CHECK_HEADERS_COMBINED],[MINGW_AT_LANG([$1])dnl
AT_SETUP([#include all; language = $1])AT_KEYWORDS([$1 $1-headers])
AS_VAR_APPEND([CPPFLAGS],[" -Wall -Wextra -Wsystem-headers"])
-m4_if([$1],[C],AS_VAR_APPEND([CPPFLAGS],[" -Wno-deprecated-declarations"]))
+AS_VAR_APPEND([CPPFLAGS],[" -Wno-deprecated-declarations"])
MINGW_AT_CHECK_COMPILE([dnl
#define _MINGW_S_IFBLK_KLUDGE 1
#define __IN_MINGWRT_TESTSUITE__ 1
https://sf.net/p/mingw/mingw-org-wsl/ci/b0a6e63e896cf28447d2312375976bf111cbc100/
commit b0a6e63e896cf28447d2312375976bf111cbc100
Author: Keith Marshall <ke...@us...>
Date: Thu Feb 22 20:00:40 2018 +0000
Correct Windows version support for <utime.h> functions.
diff --git a/mingwrt/ChangeLog b/mingwrt/ChangeLog
index c37a822..ab5367c 100644
--- a/mingwrt/ChangeLog
+++ b/mingwrt/ChangeLog
@@ -1,3 +1,24 @@
+2018-02-22 Keith Marshall <ke...@us...>
+
+ Correct Windows version support for <utime.h> functions.
+
+ * include/sys/utime.h: Tidy layout; assert copyright.
+ (_UTIME_H_): Rename this repeat inclusion guard macro...
+ (_SYS_UTIME_H): ...to this, for consistency with current practice.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use them, as appropriate.
+ (struct __utimbuf32): Define it unconditionally; remove...
+ [__MSVCRT_VERSION__>=0x0800]: ...this prerequisite.
+ (_utime32, _wutime32, _futime32): Declare them for...
+ [_WIN32_WINNT >= _WIN32_WINNT_VISTA]: ...this, in addition to...
+ [__MSVCRT_VERSION__>=__MSVCR80_DLL]: ...this original condition, but
+ also emulate them in-line, if neither condition applies.
+ [__MSVCRT_VERSION__>=__MSVCR80.DLL] (_utime, _wutime, _futime):
+ Implement them in-line, delegating each respectively to...
+ [_USE_32BIT_TIME_T] (_utime32, _wutime32, _futime32): ...these, or...
+ [!_USE_32BIT_TIME_T] (_utime64, _wutime64, _futime64): ...to these.
+ [__MSVCRT_VERSION__>=__MSVCR80.DLL] (utime): Implement in-line, or...
+ [__MSVCRT_VERSION__<__MSVCR80.DLL] (utime): ...declare it.
+
2018-01-17 Keith Marshall <ke...@us...>
Fix faulty POSIX deprecation warning logic.
diff --git a/mingwrt/include/sys/utime.h b/mingwrt/include/sys/utime.h
index 126d1ed..27086c6 100644
--- a/mingwrt/include/sys/utime.h
+++ b/mingwrt/include/sys/utime.h
@@ -1,110 +1,221 @@
/*
- * utime.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
+ * sys/utime.h
*
- * Support for the utime function.
+ * Microsoft counterpart to the (now deprecated) POSIX <utime.h> header;
+ * unlike POSIX, Microsoft provide this as <sys/utime.h>
+ *
+ *
+ * $Id$
+ *
+ * Written by Colin Peters <co...@bi...>
+ * Copyright (C) 1997-2001, 2003, 2004, 2007, 2018, MinGW.org Project
+ *
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
*
*/
-#ifndef _UTIME_H_
-#define _UTIME_H_
+#ifndef _SYS_UTIME_H
+#pragma GCC system_header
+#define _SYS_UTIME_H
-/* All the headers include this file. */
#include <_mingw.h>
+#define __need_time_t 1
+#include <sys/types.h>
+#undef __need_time_t
+
+#ifndef RC_INVOKED
#define __need_wchar_t
#define __need_size_t
-#ifndef RC_INVOKED
#include <stddef.h>
-#endif /* Not RC_INVOKED */
-#include <sys/types.h>
-#ifndef RC_INVOKED
+_BEGIN_C_DECLS
-/*
- * Structure used by _utime function.
- */
struct _utimbuf
-{
- time_t actime; /* Access time */
- time_t modtime; /* Modification time */
-};
-#if __MSVCRT_VERSION__ >= 0x0800
-struct __utimbuf32
-{
- __time32_t actime;
- __time32_t modtime;
+{ /* Microsoft's definition for their equivalent of the POSIX utimbuf
+ * structure, as used in their _utime() function.
+ */
+ time_t actime; /* last file access time */
+ time_t modtime; /* last modification time */
};
-#endif /* __MSVCRT_VERSION__ >= 0x0800 */
-
-#ifndef _NO_OLDNAMES
-/* NOTE: Must be the same as _utimbuf above. */
+#ifndef _NO_OLDNAMES
+/* Microsoft used to also support the formal POSIX structure definition,
+ * but have discontinued this practice; for portability, NEVER disable
+ * Microsoft's old names, (i.e. NEVER define _NO_OLDNAMES).
+ */
struct utimbuf
-{
- time_t actime;
- time_t modtime;
+{ /* This is the POSIX compatible definition; it must EXACTLY mimic the
+ * Microsoft definition (as specified above).
+ */
+ time_t actime;
+ time_t modtime;
};
-#endif /* Not _NO_OLDNAMES */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if __MSVCRT_VERSION__ < 0x0800
-_CRTIMP int __cdecl __MINGW_NOTHROW _utime (const char*, struct _utimbuf*);
-#endif
-
-#ifndef _NO_OLDNAMES
-/* FIXME for __MSVCRT_VERSION__ >= 0x0800 */
-_CRTIMP int __cdecl __MINGW_NOTHROW utime (const char*, struct utimbuf*);
-#endif /* Not _NO_OLDNAMES */
-
-#if __MSVCRT_VERSION__ < 0x0800
-_CRTIMP int __cdecl __MINGW_NOTHROW _futime (int, struct _utimbuf*);
-#endif
-
-/* The wide character version, only available for MSVCRT versions of the
- * C runtime library. */
-#ifdef __MSVCRT__
-#if __MSVCRT_VERSION__ < 0x0800
-_CRTIMP int __cdecl __MINGW_NOTHROW _wutime (const wchar_t*, struct _utimbuf*);
-#endif
-#endif /* MSVCRT runtime */
-
-/* These require newer versions of msvcrt.dll (6.10 or higher). */
-#if __MSVCRT_VERSION__ >= 0x0601
+#endif /* !_NO_OLDNAMES */
+
+struct __utimbuf32
+{ /* A 32-bit-explicit equivalent for struct _utimbuf; technically,
+ * Microsoft don't support this, before the release of Vista, other
+ * than on non-free runtimes from MSVCR80.DLL onwards, but since it
+ * is fundamentally identical to struct _utimbuf on those platforms
+ * which do not explicitly support it, and WE provide emulation for
+ * the associated 32-bit-explicit functions on those platforms, it
+ * is convenient for us to define it unconditionally.
+ */
+ __time32_t actime;
+ __time32_t modtime;
+};
+
+#if defined _WIN64 /* FIXME: is this true, for ALL Win64 versions? */ \
+ || _WIN32_WINNT >= _WIN32_WINNT_VISTA || __MSVCRT_VERSION__ >= __MSVCR80_DLL
+ /* The associated 32-bit-explicit functions are implemented in, and exported
+ * from MSVCRT.DLL, from Vista onwards, and versions of non-free MSVCRxx.DLL
+ * from MSVCR80.DLL onwards; (for any runtime version which does not satisfy
+ * either one of these criteria, we provide emulations below).
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW int _utime32( const char *, struct __utimbuf32 * );
+_CRTIMP __cdecl __MINGW_NOTHROW int _wutime32( const wchar_t *, struct __utimbuf32 * );
+_CRTIMP __cdecl __MINGW_NOTHROW int _futime32( int, struct __utimbuf32 * );
+#endif /* Win-Vista and later, or MSVCR80.DLL and later */
+
+#if defined _WIN64 /* ALL Win64 versions should have this! */ \
+ || _WIN32_WINNT >= _WIN32_WINNT_WIN2K || __MSVCRT_VERSION__ >= __MSVCR61_DLL
+ /* Conversely, the 64-bit-explicit alternative functions have been supported
+ * by MSVCRT.DLL, from Win2K onwards, and by non-free MSVCR61.DLL and later;
+ * we declare them, for such platforms, but we make no provision to emulate
+ * them on any earlier platform.
+ */
struct __utimbuf64
-{
- __time64_t actime;
- __time64_t modtime;
+{ /* The 64-bit-explicit equivalent of struct _utimbuf; it is necessary
+ * to declare it, only when the functions which use it are declared...
+ */
+ __time64_t actime;
+ __time64_t modtime;
};
-_CRTIMP int __cdecl __MINGW_NOTHROW _utime64 (const char*, struct __utimbuf64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wutime64 (const wchar_t*, struct __utimbuf64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _futime64 (int, struct __utimbuf64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-
-#if __MSVCRT_VERSION__ >= 0x0800
-_CRTIMP int __cdecl __MINGW_NOTHROW _utime32 (const char*, struct __utimbuf32*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wutime32 (const wchar_t*, struct __utimbuf32*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _futime32 (int, struct __utimbuf32*);
-#ifndef _USE_32BIT_TIME_T
-_CRTALIAS int __cdecl __MINGW_NOTHROW _utime (const char* _v1, struct _utimbuf* _v2) { return(_utime64 (_v1,(struct __utimbuf64*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _wutime (const wchar_t* _v1, struct _utimbuf* _v2) { return(_wutime64 (_v1,(struct __utimbuf64*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _futime (int _v1, struct _utimbuf* _v2) { return(_futime64 (_v1,(struct __utimbuf64*)_v2)); }
-#else
-_CRTALIAS int __cdecl __MINGW_NOTHROW _utime (const char* _v1, struct _utimbuf* _v2) { return(_utime32 (_v1,(struct __utimbuf32*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _wutime (const wchar_t* _v1, struct _utimbuf* _v2) { return(_wutime32 (_v1,(struct __utimbuf32*)_v2)); }
-_CRTALIAS int __cdecl __MINGW_NOTHROW _futime (int _v1, struct _utimbuf* _v2) { return(_futime32 (_v1,(struct __utimbuf32*)_v2)); }
-#endif
-#endif /* __MSVCRT_VERSION__ >= 0x0800 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _UTIME_H_ */
+/* ...as here.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW int _utime64( const char *, struct __utimbuf64 * );
+_CRTIMP __cdecl __MINGW_NOTHROW int _wutime64( const wchar_t *, struct __utimbuf64 * );
+_CRTIMP __cdecl __MINGW_NOTHROW int _futime64( int, struct __utimbuf64 * );
+#endif /* Win2K and later, or MSVCR61.DLL and later */
+
+#if __MSVCRT_VERSION__ >= __MSVCR80_DLL
+/* Non-free MSVCRxx.DLL variants, from MSVCR80.DLL onwards, do not export
+ * utime(), _utime(), _wutime(), or _futime(); instead, they require in-line
+ * emulation, under control of Microsoft's ill-conceived _USE_32BIT_TIME_T
+ * feature test macro...
+ */
+# ifdef _USE_32BIT_TIME_T
+/* ...which, when defined, causes these generic function names to be mapped
+ * to their 32-bit-explicit variants, (which thus retain compatibility with
+ * their actual implementations, as exported by MSVCRT.DLL)...
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _utime( const char * __v1, struct _utimbuf * __v2 )
+{ return _utime32( __v1, (struct __utimbuf32 *)(__v2) ); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _wutime( const wchar_t * __v1, struct _utimbuf * __v2)
+{ return _wutime32( __v1, (struct __utimbuf32 *)(__v2) ); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _futime( int __v1, struct _utimbuf * __v2 )
+{ return _futime32( __v1, (struct __utimbuf32 *)(__v2) ); }
+
+# else
+/* ...but, when NOT defined, they are mapped to the 64-bit-explicit
+ * variants, (which are incompatible with the corresponding MSVCRT.DLL
+ * implementations).
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _utime( const char * __v1, struct _utimbuf * __v2 )
+{ return _utime64( __v1, (struct __utimbuf64 *)(__v2) ); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _wutime( const wchar_t * __v1, struct _utimbuf * __v2 )
+{ return _wutime64( __v1, (struct __utimbuf64 *)(__v2) ); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _futime( int __v1, struct _utimbuf * __v2 )
+{ return _futime64( __v1, (struct __utimbuf64 *)(__v2) ); }
+
+# endif /* !_USE_32BIT_TIME_T */
+
+# ifndef _NO_OLDNAMES
+/* The POSIX compatible (Microsoft old name) function must also be
+ * emulated; it maps to whatever in-line implementation has become
+ * applicable for _utime()
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int utime( const char * __v1, struct _utimbuf * __v2 )
+{ return _utime( __v1, (struct _utimbuf *)(__v2) ); }
+# endif /* !_NO_OLDNAMES */
+
+#else /* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+/* When using CRTDLL.DLL, MSVCRT.DLL, or non-free MSVCRxx.DLL prior to
+ * MSVCR80.DLL, each of the preceding functions is physically exported.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW int _utime( const char *, struct _utimbuf * );
+_CRTIMP __cdecl __MINGW_NOTHROW int _futime( int, struct _utimbuf * );
+
+# ifdef __MSVCRT__
+/* The wide character version is only available when linking with MSVCRT.DLL,
+ * (or non-free MSVCRxx.DLL variants); this is not declared, when linking with
+ * CRTDLL.DLL
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW int _wutime( const wchar_t *, struct _utimbuf * );
+# endif /* MSVCRT.DLL only */
+
+# if _WIN32_WINNT < _WIN32_WINNT_VISTA
+/* However, there is no physical implementation of any 32-bit-explict
+ * function variant, prior to Vista, so emulate them.
+ *
+ * FIXME: maybe only if _MINGW32_SOURCE_EXTENDED is specified?
+ */
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _utime32( const char *__v1, struct __utimbuf32 *__v2 )
+{ return _utime( __v1, (struct _utimbuf *)(__v2) ); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _futime32( int __v1, struct __utimbuf32 *__v2 )
+{ return _futime( __v1, (struct _utimbuf *)(__v2) ); }
+
+__CRT_ALIAS __cdecl __MINGW_NOTHROW
+int _wutime32( const wchar_t *__v1, struct __utimbuf32 *__v2 )
+{ return _wutime( __v1, (struct _utimbuf *)(__v2) ); }
+
+# endif /* _WIN32_WINNT < _WIN32_WINNT_VISTA */
+
+# ifndef _NO_OLDNAMES
+/* Strictly, the POSIX compatible utime() function is exported only by
+ * MSVCRT.DLL from Vista onwards, but it APPEARS to be exported, by way
+ * of a libmoldnames.a trampoline, for any MSVCRT.DLL which exports a
+ * physical _utime() implementation.
+ */
+_CRTIMP __cdecl __MINGW_NOTHROW int utime( const char *, struct utimbuf * );
+
+# endif /* !_NO_OLDNAMES */
+#endif /* __MSVCRT_VERSION__ < __MSVCR80_DLL */
+
+_END_C_DECLS
+
+#endif /* ! RC_INVOKED */
+#endif /* !_SYS_UTIME_H: $RCSfile$: end of file */
-----------------------------------------------------------------------
Summary of changes:
mingwrt/ChangeLog | 49 ++++++++
mingwrt/include/sys/timeb.h | 216 +++++++++++++++++++++-----------
mingwrt/include/sys/utime.h | 291 ++++++++++++++++++++++++++++++--------------
mingwrt/tests/headers.at | 3 +-
4 files changed, 399 insertions(+), 160 deletions(-)
hooks/post-receive
--
Repository: mingw-org-wsl
|