select behavior different with wine
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; }
participants (1)
-
Phil Lodwick