* psdk_inc/_ip_types.h (struct __ms_timeval): Define on LP64 systems.
	(TIMEVAL): Define based on struct __ms_timeval on LP64, based on
	struct timeval otherwise.
	(PTIMEVAL): Ditto.
	(LPTIMEVAL): Ditto.
	* winsock.h: Replace all `struct timeval *' usages with PTIMEVAL.
	* winsock2.h: Ditto.
	* ws2spi.h: Ditto.
	* ws2tcpip.h: Ditto.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@5288 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/ChangeLog b/mingw-w64-headers/include/ChangeLog
index 88332de..da0de49 100644
--- a/mingw-w64-headers/include/ChangeLog
+++ b/mingw-w64-headers/include/ChangeLog
@@ -1,5 +1,17 @@
 2012-07-30  Corinna Vinschen  <vinschen@redhat.com>
 
+	* psdk_inc/_ip_types.h (struct __ms_timeval): Define on LP64 systems.
+	(TIMEVAL): Define based on struct __ms_timeval on LP64, based on
+	struct timeval otherwise.
+	(PTIMEVAL): Ditto.
+	(LPTIMEVAL): Ditto.
+	* winsock.h: Replace all `struct timeval *' usages with PTIMEVAL.
+	* winsock2.h: Ditto.
+	* ws2spi.h: Ditto.
+	* ws2tcpip.h: Ditto.
+
+2012-07-30  Corinna Vinschen  <vinschen@redhat.com>
+
 	* af_irda.h: Temporarily redefine u_long as __ms_u_long on LP64 systems.
 	* in6addr.h: Ditto.
 	* inaddr.h: Ditto.
diff --git a/mingw-w64-headers/include/psdk_inc/_ip_types.h b/mingw-w64-headers/include/psdk_inc/_ip_types.h
index 7da85ae..5a3ba26 100644
--- a/mingw-w64-headers/include/psdk_inc/_ip_types.h
+++ b/mingw-w64-headers/include/psdk_inc/_ip_types.h
@@ -103,9 +103,19 @@
 typedef struct linger		*PLINGER;
 typedef struct linger		*LPLINGER;
 
+#ifdef __LP64__
+struct __ms_timeval {
+	__LONG32 tv_sec;
+	__LONG32 tv_usec;
+};
+typedef struct __ms_timeval	TIMEVAL;
+typedef struct __ms_timeval	*PTIMEVAL;
+typedef struct __ms_timeval	*LPTIMEVAL;
+#else
 typedef struct timeval		TIMEVAL;
 typedef struct timeval		*PTIMEVAL;
 typedef struct timeval		*LPTIMEVAL;
+#endif
 
 #ifdef __LP64__
 #pragma pop_macro("u_long")
diff --git a/mingw-w64-headers/include/winsock.h b/mingw-w64-headers/include/winsock.h
index baf8dec..81ea00a 100644
--- a/mingw-w64-headers/include/winsock.h
+++ b/mingw-w64-headers/include/winsock.h
@@ -296,7 +296,7 @@
   WINSOCK_API_LINKAGE int WSAAPI recv(SOCKET s,char *buf,int len,int flags);
   WINSOCK_API_LINKAGE int WSAAPI recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
 #ifndef __INSIDE_CYGWIN__
-  WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const struct timeval *timeout);
+  WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout);
 #endif /* !__INSIDE_CYGWIN__ */
   WINSOCK_API_LINKAGE int WSAAPI send(SOCKET s,const char *buf,int len,int flags);
   WINSOCK_API_LINKAGE int WSAAPI sendto(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen);
diff --git a/mingw-w64-headers/include/winsock2.h b/mingw-w64-headers/include/winsock2.h
index ed27181..4d84136 100644
--- a/mingw-w64-headers/include/winsock2.h
+++ b/mingw-w64-headers/include/winsock2.h
@@ -864,7 +864,7 @@
   typedef u_short (WSAAPI *LPFN_NTOHS)(u_short netshort);
   typedef int (WSAAPI *LPFN_RECV)(SOCKET s,char *buf,int len,int flags);
   typedef int (WSAAPI *LPFN_RECVFROM)(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
-  typedef int (WSAAPI *LPFN_SELECT)(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const struct timeval *timeout);
+  typedef int (WSAAPI *LPFN_SELECT)(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout);
   typedef int (WSAAPI *LPFN_SEND)(SOCKET s,const char *buf,int len,int flags);
   typedef int (WSAAPI *LPFN_SENDTO)(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen);
   typedef int (WSAAPI *LPFN_SETSOCKOPT)(SOCKET s,int level,int optname,const char *optval,int optlen);
@@ -983,7 +983,7 @@
   WINSOCK_API_LINKAGE int WSAAPI recv(SOCKET s,char *buf,int len,int flags);
   WINSOCK_API_LINKAGE int WSAAPI recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
 #ifndef __INSIDE_CYGWIN__
-  WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const struct timeval *timeout);
+  WINSOCK_API_LINKAGE int WSAAPI select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout);
 #endif /* !__INSIDE_CYGWIN__ */
   WINSOCK_API_LINKAGE int WSAAPI send(SOCKET s,const char *buf,int len,int flags);
   WINSOCK_API_LINKAGE int WSAAPI sendto(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen);
@@ -1156,7 +1156,7 @@
   LPSOCKADDR LocalAddress,
   LPDWORD RemoteAddressLength,
   LPSOCKADDR RemoteAddress,
-  const struct timeval *timeout,
+  const PTIMEVAL timeout,
   LPWSAOVERLAPPED Reserved
 );
 
@@ -1168,7 +1168,7 @@
   LPSOCKADDR LocalAddress,
   LPDWORD RemoteAddressLength,
   LPSOCKADDR RemoteAddress,
-  const struct timeval *timeout,
+  const PTIMEVAL timeout,
   LPWSAOVERLAPPED Reserved
 );
 
@@ -1180,7 +1180,7 @@
   LPSOCKADDR LocalAddress,
   LPDWORD RemoteAddressLength,
   LPSOCKADDR RemoteAddress,
-  const struct timeval *timeout,
+  const PTIMEVAL timeout,
   LPWSAOVERLAPPED Reserved
 );
 #define WSAConnectByName __MINGW_NAME_AW(WSAConnectByName)
diff --git a/mingw-w64-headers/include/ws2spi.h b/mingw-w64-headers/include/ws2spi.h
index 4956e7a..4742199 100644
--- a/mingw-w64-headers/include/ws2spi.h
+++ b/mingw-w64-headers/include/ws2spi.h
@@ -57,7 +57,7 @@
   typedef int (WSPAPI *LPWSPRECV)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno);
   typedef int (WSPAPI *LPWSPRECVDISCONNECT)(SOCKET s,LPWSABUF lpInboundDisconnectData,LPINT lpErrno);
   typedef int (WSPAPI *LPWSPRECVFROM)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno);
-  typedef int (WSPAPI *LPWSPSELECT)(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const struct timeval *timeout,LPINT lpErrno);
+  typedef int (WSPAPI *LPWSPSELECT)(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout,LPINT lpErrno);
   typedef int (WSPAPI *LPWSPSEND)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno);
   typedef int (WSPAPI *LPWSPSENDDISCONNECT)(SOCKET s,LPWSABUF lpOutboundDisconnectData,LPINT lpErrno);
   typedef int (WSPAPI *LPWSPSENDTO)(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,LPWSATHREADID lpThreadId,LPINT lpErrno);
diff --git a/mingw-w64-headers/include/ws2tcpip.h b/mingw-w64-headers/include/ws2tcpip.h
index 19927c7..6ecdc2d 100644
--- a/mingw-w64-headers/include/ws2tcpip.h
+++ b/mingw-w64-headers/include/ws2tcpip.h
@@ -338,23 +338,23 @@
 
 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExA(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
 					      LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
-					      struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					      PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					      LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					      LPHANDLE lpNameHandle);
 WINSOCK_API_LINKAGE int WSAAPI GetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
 					      LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
-					      struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					      PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					      LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					      LPHANDLE lpNameHandle);
 
 WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExA(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
 					      DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
-					      LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					      LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					      LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					      LPHANDLE lpNameHandle);
 WINSOCK_API_LINKAGE int WSAAPI SetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
 					      DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
-					      LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					      LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					      LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					      LPHANDLE lpNameHandle);
 
@@ -365,24 +365,24 @@
 #define LPFN_GETADDRINFOEX __MINGW_NAME_AW(LPFN_GETADDRINFOEX)
   typedef int (WSAAPI *LPFN_GETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
 					    LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
-					    struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					    PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					    LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					    LPHANDLE lpNameHandle);
   typedef int (WSAAPI *LPFN_GETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
 					    LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
-					    struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					    PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					    LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					    LPHANDLE lpNameHandle);
 
 #define LPFN_SETADDRINFOEX __MINGW_NAME_AW(LPFN_SETADDRINFOEX)
   typedef int (WSAAPI *LPFN_SETADDRINFOEXA)(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
 					    DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
-					    LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					    LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					    LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					    LPHANDLE lpNameHandle);
   typedef int (WSAAPI *LPFN_SETADDRINFOEXW)(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
 					    DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
-					    LPGUID lpNspId,struct timeval *timeout,LPOVERLAPPED lpOverlapped,
+					    LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
 					    LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
 					    LPHANDLE lpNameHandle);