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 */