Greetings,
I ran across a problem that the following code demonstrates. I believe it is due to the different definition of select on Windows vs Linux. Before I start to think about how to fix this in Wine, I was wondering if anybody has already thought about the problem.
#include "stdafx.h" #include <winsock2.h>
int _tmain(int argc, _TCHAR* argv[]) { SOCKET fd; WORD wVersionRequested; WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 ); WSAStartup(wVersionRequested, &wsaData); fd = socket(AF_INET, SOCK_STREAM, 0); if (fd != INVALID_SOCKET) { fd_set readfds; struct timeval select_timeout ;
FD_ZERO(&readfds); FD_SET(fd, &readfds) ; select_timeout.tv_sec=2 ; select_timeout.tv_usec=0 ;
if (select((int) fd+1, &readfds, NULL, NULL, &select_timeout) != SOCKET_ERROR) { if(FD_ISSET(fd, &readfds)) printf("THIS IS WINE\n"); else printf("THIS IS WINDOWS\n"); } else printf("got a socket error\n");
closesocket(fd); } return 0; }