We have already started requiring WINELIB_USE_WINSOCK for this case; let's also take the opportunity to remove some workarounds.
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- include/winsock.h | 73 +++++++++------------------------------------- include/winsock2.h | 58 ++++-------------------------------- 2 files changed, 18 insertions(+), 113 deletions(-)
diff --git a/include/winsock.h b/include/winsock.h index 4b8242e404d..38186f8c80d 100644 --- a/include/winsock.h +++ b/include/winsock.h @@ -32,53 +32,12 @@ #ifndef __WINE_WINSOCKAPI_STDLIB_H #define __WINE_WINSOCKAPI_STDLIB_H
-/* - * This section defines the items that conflict with the Unix headers. - */ #ifndef USE_WS_PREFIX -/* We are not using the WS_ prefix we risk getting conflicts for - * everything related to select. - */ -# ifdef FD_CLR -/* Too late, the Unix version of stdlib.h was included before winsock.h. - * This means select and all the related stuff is already defined and we - * cannot override types and function prototypes. - * All we can do is disable all these symbols so that they are not used - * inadvertently. - */ -# include <sys/types.h> -# undef FD_SETSIZE -# undef FD_CLR -# undef FD_SET -# undef FD_ZERO -# undef FD_ISSET
-# define FD_SETSIZE Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_CLR Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_SET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_ZERO Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_ISSET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define fd_set Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define select Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# elif defined(RLIM_INFINITY) /* On Darwin stdlib.h includes sys/resource.h which defines timeval but not the fd_set macros */ -# define fd_set unix_fd_set -# include <sys/types.h> -# include <time.h> -# include <stdlib.h> -# undef fd_set -# undef FD_SETSIZE -# undef FD_CLR -# undef FD_SET -# undef FD_ZERO -# undef FD_ISSET -# define select Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library -# define timeval Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library -# else /* FD_CLR */ -/* stdlib.h has not been included yet so it's not too late. Include it now - * making sure that none of the select symbols is affected. Then we can - * define them with our own values. - */ +# if defined(FD_CLR) || defined(RLIM_INFINITY) +# error Include winsock.h before stdlib.h, time.h, or sys/types.h, or use the MSVCRT library +# else # define fd_set unix_fd_set # define timeval unix_timeval # define select unix_select @@ -98,14 +57,13 @@ # undef FD_ZERO # undef FD_ISSET # undef _TIMEVAL_DEFINED - -# define WS_DEFINE_SELECT # endif /* FD_CLR */
#else -# define WS_DEFINE_SELECT + # include <sys/types.h> # include <stdlib.h> + #endif /* !USE_WS_PREFIX */
#endif /* __WINE_WINSOCKAPI_STDLIB_H */ @@ -406,18 +364,15 @@ typedef struct WS(linger) * Select */
-#ifdef WS_DEFINE_SELECT -/* Define our own version of select and the associated types and macros */ - -# ifndef USE_WS_PREFIX -# ifndef FD_SETSIZE -# define FD_SETSIZE 64 -# endif -# else -# ifndef WS_FD_SETSIZE -# define WS_FD_SETSIZE 64 -# endif +#ifndef USE_WS_PREFIX +# ifndef FD_SETSIZE +# define FD_SETSIZE 64 # endif +#else +# ifndef WS_FD_SETSIZE +# define WS_FD_SETSIZE 64 +# endif +#endif
typedef struct WS(fd_set) { @@ -475,8 +430,6 @@ typedef struct WS(timeval)
int WINAPI __WSAFDIsSet(SOCKET,WS(fd_set)*);
-#endif /* WS_DEFINE_SELECT */ - /* we have to define hton/ntoh as macros to avoid conflicts with Unix headers */ #ifndef USE_WS_PREFIX
diff --git a/include/winsock2.h b/include/winsock2.h index 565979a74c0..0e6fa448570 100644 --- a/include/winsock2.h +++ b/include/winsock2.h @@ -27,53 +27,12 @@ #ifndef __WINE_WINSOCKAPI_STDLIB_H #define __WINE_WINSOCKAPI_STDLIB_H
-/* - * This section defines the items that conflict with the Unix headers. - */ #ifndef USE_WS_PREFIX -/* We are not using the WS_ prefix we risk getting conflicts for - * everything related to select. - */ -# ifdef FD_CLR -/* Too late, the Unix version of stdlib.h was included before winsock.h. - * This means select and all the related stuff is already defined and we - * cannot override types and function prototypes. - * All we can do is disable all these symbols so that they are not used - * inadvertently. - */ -# include <sys/types.h> -# undef FD_SETSIZE -# undef FD_CLR -# undef FD_SET -# undef FD_ZERO -# undef FD_ISSET
-# define FD_SETSIZE Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_CLR Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_SET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_ZERO Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define FD_ISSET Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define fd_set Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# define select Include_winsock_h_before_stdlib_h_or_use_the_MSVCRT_library -# elif defined(RLIM_INFINITY) /* On Darwin stdlib.h includes sys/resource.h which defines timeval but not the fd_set macros */ -# define fd_set unix_fd_set -# include <sys/types.h> -# include <time.h> -# include <stdlib.h> -# undef fd_set -# undef FD_SETSIZE -# undef FD_CLR -# undef FD_SET -# undef FD_ZERO -# undef FD_ISSET -# define select Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library -# define timeval Include_winsock_h_before_sys_types_h_or_use_the_MSVCRT_library -# else /* FD_CLR */ -/* stdlib.h has not been included yet so it's not too late. Include it now - * making sure that none of the select symbols is affected. Then we can - * define them with our own values. - */ +# if defined(FD_CLR) || defined(RLIM_INFINITY) +# error Include winsock2.h before stdlib.h, time.h, or sys/types.h, or use the MSVCRT library +# else # define fd_set unix_fd_set # define timeval unix_timeval # define select unix_select @@ -93,14 +52,13 @@ # undef FD_ZERO # undef FD_ISSET # undef _TIMEVAL_DEFINED - -# define WS_DEFINE_SELECT # endif /* FD_CLR */
#else -# define WS_DEFINE_SELECT + # include <sys/types.h> # include <stdlib.h> + #endif /* !USE_WS_PREFIX */
#endif /* __WINE_WINSOCKAPI_STDLIB_H */ @@ -562,8 +520,6 @@ typedef struct WS(timeval) } TIMEVAL, *PTIMEVAL, *LPTIMEVAL; #endif
-#ifdef WS_DEFINE_SELECT - #define __WS_FD_CLR(fd, set, cast) do { \ unsigned int __i; \ for (__i = 0; __i < ((cast*)(set))->fd_count; __i++) \ @@ -626,8 +582,6 @@ typedef struct WS(fd_set) SOCKET fd_array[WS(FD_SETSIZE)]; } WS(fd_set), FD_SET, *PFD_SET, *LPFD_SET;
-#endif - typedef struct /*WS(pollfd)*/ { SOCKET fd; @@ -1078,9 +1032,7 @@ typedef int (WINAPI *LPFN_GETHOSTNAME)(char*,int); typedef int (WINAPI *LPFN_GETPEERNAME)(SOCKET,struct WS(sockaddr)*,int*); typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNAME)(const char*); typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNUMBER)(int); -#ifdef WS_DEFINE_SELECT typedef int (WINAPI* LPFN_SELECT)(int,WS(fd_set)*,WS(fd_set)*,WS(fd_set)*,const struct WS(timeval)*); -#endif typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYNAME)(const char*,const char*); typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYPORT)(int,const char*); typedef int (WINAPI *LPFN_GETSOCKNAME)(SOCKET,struct WS(sockaddr)*,int*);