Portability fixes.
diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c index 4b4e391..3a72fac 100644 --- a/dlls/winsock/socket.c +++ b/dlls/winsock/socket.c
@@ -21,12 +21,9 @@ #ifdef HAVE_SYS_FILIO_H # include <sys/filio.h> #endif -#if defined(__svr4__) || defined(__sun) -#include <sys/ioccom.h> #ifdef HAVE_SYS_SOCKIO_H # include <sys/sockio.h> #endif -#endif #if defined(__EMX__) # include <sys/so_ioctl.h> @@ -1384,11 +1381,28 @@ } else { - struct ws_sockaddr_in *ipTemp = (struct ws_sockaddr_in *)&ifInfo.ifr_netmask; + /* Trying to avoid some compile problems across platforms. + (Linux, FreeBSD, Solaris...) */ + #ifndef ifr_netmask + #ifndef ifr_addr + intArray->iiNetmask.AddressIn.sin_family = AF_INET; + intArray->iiNetmask.AddressIn.sin_port = 0; + intArray->iiNetmask.AddressIn.sin_addr.ws_addr = 0; + ERR ("Unable to determine Netmask on your platform!\n"); + #else + struct ws_sockaddr_in *ipTemp = (struct ws_sockaddr_in *)&ifInfo.ifr_addr; - intArray->iiNetmask.AddressIn.sin_family = AF_INET; - intArray->iiNetmask.AddressIn.sin_port = ipTemp->sin_port; - intArray->iiNetmask.AddressIn.sin_addr.ws_addr = ipTemp->sin_addr.S_un.S_addr; + intArray->iiNetmask.AddressIn.sin_family = AF_INET; + intArray->iiNetmask.AddressIn.sin_port = ipTemp->sin_port; + intArray->iiNetmask.AddressIn.sin_addr.ws_addr = ipTemp->sin_addr.S_un.S_addr; + #endif + #else + struct ws_sockaddr_in *ipTemp = (struct ws_sockaddr_in *)&ifInfo.ifr_netmask; + + intArray->iiNetmask.AddressIn.sin_family = AF_INET; + intArray->iiNetmask.AddressIn.sin_port = ipTemp->sin_port; + intArray->iiNetmask.AddressIn.sin_addr.ws_addr = ipTemp->sin_addr.S_un.S_addr; + #endif } /* Socket Status Flags */